繁体   English   中英

使用bash,sed或awk将三行或更多行改为两行

[英]Change three or more empty lines into two using bash, sed or awk

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

"1\n2\n\n3\n\n\n4\n\n\n\n2\n\n3\n\n\n1\n"

我想使用bash, sedawk将三个或更多的空行“缩小”为两个,以获取字符串

"1\n2\n\n3\n\n4\n\n2\n\n3\n\n1\n"

有人知道吗?

awk

$ awk -v RS= -v ORS='\n\n' 1 file

如果数据不是太庞大,并且您使用了GNU sed ,请使用sed -z使其适用于单个以null终止的记录,而不是每行一个\\n终止的记录:

sed -z 's/\n\n\n\n*/\n\n/g'

或使用扩展的正则表达式:

sed -zr 's/\n{3,}/\n\n/g'

如果可以接受perl,

perl -00 -lpe1

应该这样做。 它读取并输出整个段落,这具有将2条以上换行符标准化为\\n\\n的副作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM