假设我们有包含单词和多个空行的字符串。例如
"1n2nn3nnn4nnnn2nn3nnn1n"
我想使用bash, sed
或 awk
将三个或更多的空线"缩小"到两个或两个空线以获取字符串
"1n2nn3nn4nn2nn3nn1n"
有人想到吗?
with awk
$ awk -v RS= -v ORS='nn' 1 file
如果Perl可以接受,
perl -00 -lpe1
应该这样做。它读取和输出整个段落,其副作用是将2个以上的新线正常于nn
。
如果数据不太庞大,并且您有GNU sed
,请使用sed -z
使其在单个零端的记录上工作,而不是每行n
端接的记录:
sed -z 's/nnnn*/nn/g'
或带有扩展的正则是:
sed -zr 's/n{3,}/nn/g'