我想替换文件中所有出现的这个内容:
ab
ba
有了这个:
a a
我尝试了显而易见的方法:
$ perl -i -p -e 's/ab\nba/a a/' file.txt
没有成功。这是怎么做到的?
我找不到任何可以正确表达这个问题的问题。
答案1
如果不带任何其他选项,-p
则逐行处理输入。 之后的任何行都不能包含任何内容\n
。 您必须更改记录分隔符:
perl -i~ -0pe 's/ab\nba/a a/' file.txt
-i~
将“就地”修改文件,并留下一个备份(名为file.txt~
)-0
使该字符成为\0
输入记录分隔符。重要的是,该字符不会出现在要替换的字符串中,因此它永远不会只读取其中的一部分。-p
逐条读取文件记录,读取完每条记录后,运行代码并打印默认变量$_
-e
仅介绍代码。