每次更换新行不按预期工作

时间:2016-03-22 06:53:39

标签: regex perl

我尝试使用Perl替换文件tmp中的换行符,但会出现意外行为,如下所示。

user$ cat tmp
aa
bb
cc


user$ perl -p -e 's/\n/==/g' tmp
aa==bb==cc==

user$ perl -p -e 's/\nbb/==/g' tmp
aa
bb
cc

为什么输出不是

aa==
cc

代替?

1 个答案:

答案 0 :(得分:6)

这里的问题是-p标志循环你的代码,如:

LINE:
    while (<>) {
    ...     # your program goes here
    } continue {
    print or die "-p destination: $!\n";
    }

所以你的正则表达式为每一行运行。只需使用-0777选项将整个文件作为一行读取:

perl -p -0777 -e 's/\nbb/==/g' tmp