Linux 如何使用sed仅删除三个空行?

Linux 如何使用sed仅删除三个空行?,linux,sed,Linux,Sed,如何使用sed仅删除三个空行 例如: MyText.txt line1 line2 line3 line4 line1 line2 line3 line4 第1行 第2行 第3行 第4行 使用sed后,我希望结果如下所示 MyText.txt line1 line2 line3 line4 line1 line2 line3 line4 第1行 第2行 第3行 第4行 我可以用 sed -i '/^$/{ N /^\n$/D }' MyText.txt 塞德-

如何使用sed仅删除三个空行

例如:

MyText.txt

line1 line2 line3 line4 line1 line2 line3 line4 第1行 第2行 第3行 第4行 使用sed后,我希望结果如下所示 MyText.txt

line1 line2 line3 line4 line1 line2 line3 line4 第1行 第2行 第3行 第4行 我可以用

sed -i '/^$/{ N /^\n$/D }' MyText.txt 塞德-我是/^$/{ N /^\新西兰元/日 }'MyText.txt 然而,我的目标是删除三个空行,并且只删除三个空行


任何帮助都将不胜感激。

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

$ 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

它不是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'a\nb\n\nc\n\n\nd\n''
perl-e'undef$/;$=;s/\n\n\n/\n/g;印刷品
A.
B
C
D
它非常简单:

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

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

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

非常聪明和简洁。