我想使用
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'
示例:
带有文字的输入文件 (不是换行符):
$ 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)
我有一个类似的问题,我想更换' ' 在 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'