我想使用tr
命令将所有出现的字符串“\ n”替换为新行(\ n)。
我尝试了tr '\\n' '\n'
,但这似乎与任何'\'和任何'n'
答案 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'