tr命令 - 如何用实际换行符替换字符串“\ n”(\ n)

时间:2012-11-28 17:10:40

标签: linux gnu tr

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

我尝试了tr '\\n' '\n',但这似乎与任何'\'和任何'n'

相匹配

3 个答案:

答案 0 :(得分:55)

以下是使用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

答案 1 :(得分:1)

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

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

示例:

使用文字\ n(不是换行符)的输入文件:

$ 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: how to execute the Perl interpreter: command line switches
perldoc perlre: Perl regular expressions (regexes)

答案 2 :(得分:1)

我有一个类似的问题,我想在 Mac BigSur 上用新行替换 '\n'

输入:

-----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'