在文件的每一行(但不是段落的最后一行)的末尾添加反斜杠

时间:2014-07-15 10:01:25

标签: perl unix

我有一个文件,包含:

aa bb
ccc

AA
BB
abc def
GH

我必须添加' \'在每一行的末尾,但不是每个段落的最后一行:比如

aa bb \
ccc

aa \
bb \
abc def \
gh

1 个答案:

答案 0 :(得分:3)

将Perl设置为段落模式,将\添加到换行符:

perl -p00le 's/\n/ \\\n/g'

输出:

aa bb \
ccc

aa \
bb \
abc def \
gh

这利用了一些Perl flags

  

-00 特殊值00将导致Perl以段落模式粘贴文件。

     

-l <​​/ strong>启用自动行结束处理。它有两个独立的效果。首先,当与-n或-p一起使用时,它会自动选择$ /(输入记录分隔符)。其次,它将$ \(输出记录分隔符)赋值为octnum,以便任何print语句都重新添加该分隔符。

这是Deparse的作用:

perl -MO=Deparse -p00le 's/\n/ \\\n/g'
BEGIN { $/ = ""; $\ = "\n\n"; }
LINE: while (defined($_ = <ARGV>)) {
    chomp $_;
    s/\n/ \\\n/g;
}
continue {
    print $_;
}