我想使用该tr
命令将所有出现的字符串“\n”替换为新行 (\n)。
我试过tr '\\n' '\n'
了,但这似乎与任何 '\' 和任何 'n' 匹配
以下是如何做到这一点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
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
::如何执行 Perl 解释器:命令行开关
perldoc perlre
:Perl 正则表达式(正则表达式)
我有一个类似的问题,我想在 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'