使用bash,sed或尴尬将三个或更多的空线更改为两条



假设我们有包含单词和多个空行的字符串。例如

"1n2nn3nnn4nnnn2nn3nnn1n"

我想使用bash, sedawk将三个或更多的空线"缩小"到两个或两个空线以获取字符串

"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'

最新更新