我有一个文件,包含:
aa bb
ccc
AA
BB
abc def
GH
我必须添加' \'在每一行的末尾,但不是每个段落的最后一行:比如
aa bb \
ccc
aa \
bb \
abc def \
gh
答案 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 $_;
}