tr 命令 - 如何替换字符串“ " 带有实际的换行符 ( )

问题描述 投票:0回答:3

我想使用

tr
命令将所有出现的字符串“
\n
”替换为新行 (
\n
)。

我尝试了

tr '\\n' '\n'
,但这似乎与任何“
\
”和任何“
n

匹配
string bash perl newline tr
3个回答
99
投票

以下是如何使用

sed
进行操作:

sed 's/\\n/\n/g'

使用示例:

要就地替换文件中所有出现的

\n

sed -i 's/\\n/\n/g' input_filename

通过管道替换所有出现的

\n
,并保存到另一个文件中

cat file1 file2 file3 file4 | sed 's/\\n/\n/g' > output_file

5
投票

Perl 解决方案类似于 sampson-chen 的 sed 解决方案:

perl -pe 's/\\n/\n/g'

示例:

带有文字的输入文件 (不是换行符):

$ cat test1.txt          
foo\nbar\n\nbaz

将所有出现的

\n
替换为实际的换行符,打印到
STDOUT
:

$ perl -pe 's/\\n/\n/g' test1.txt
foo
bar

baz

同样,就地更改输入文件,将备份保存到

test1.txt.bak

$ perl -i.bak -pe 's/\\n/\n/g' test1.txt

Perl 单行代码使用这些命令行标志:

-e
:告诉 Perl 查找内联代码,而不是在文件中。
-p
:一次循环输入一行,默认将其分配给
$_
。每次循环迭代后添加
print $_

-i.bak
:就地编辑输入文件(覆盖输入文件)。覆盖之前,请在其名称后附加扩展名
.bak
,保存原始文件的备份副本。

另请参阅:

perldoc perlrun
:如何执行Perl解释器:命令行开关
perldoc perlre
:Perl 正则表达式(regexes)


0
投票

我有一个类似的问题,我想更换' ' 在 Mac BigSur 上有新行

输入:

-----BEGIN CERTIFICATE-----\\nMIGcz......\naLRn\\nyxiJdo=\\n-----END CERTIFICATE-----

预期输出:

-----BEGIN CERTIFICATE-----
MIGcz......
aLRn
yxiJdo=
-----END CERTIFICATE-----

Sed、perl 都不适合我。但一个简单的“tr”命令很有用。

echo -----BEGIN CERTIFICATE-----\\nMIGcz......\\naLRn\\nyxiJdo=\\n-----END CERTIFICATE----- | tr '\' '\n'
© www.soinside.com 2019 - 2024. All rights reserved.