如何使用sed删除三重空行?

如何使用sed删除三重空行?

例如:

MyText.txt

一号线

 2号线


 3号线



 4号线

与使用sed我想结果看起来像这样
MyText.txt

一号线

 2号线


 3号线
 4号线

我能够删除双空行

 sed -i'/ ^ $ / {
 ñ
 / ^ \ n $ / d
 }'MyText.txt

但是,我的目标是删除三重空行,只有三重空行。

任何帮助将非常感激。

Solutions Collecting From Web of "如何使用sed删除三重空行?"

这很简单:

sed '1N;N;/^\n\n$/d;P;D' 

这不是sed,但是它比sed所能做的要短很多:

 $ printf 'a\nb\n\nc\n\n\nd\n' | perl -e 'undef $/; $_ = <>; s/\n\n\n/\n/g; print' a b c d 

以下代码只删除三个(不少于或者少于)连续的空行:

 $ printf "%s\n" foo "" bar "" "" baz "" "" "" cow "" "" "" "" moe | sed ' /^$/{ N; /^\n$/{ N; /^\n\n$/{ $ d; N; s/\n\n\n\(.\)/\1/ } } }' foo bar baz cow moe 

如果你允许awk解决方案,你可以这样做:

 awk -v RS='\n\n\n\n' 1 Text.txt