如何使用sed只删除三个空行?
例如:
MyText.txt
line1 line2 line3 line4
使用sed我希望结果看起来像这样
MyText.txt
line1 line2 line3 line4
我能够用
删除双空行sed -i '/^$/{ N /^\n$/D }' MyText.txt
但是我的目标是删除三条空行,只删除三条空行。
非常感谢任何帮助。
答案 0 :(得分:4)
这很简单:
sed '1N;N;/^\n\n$/d;P;D'
答案 1 :(得分:2)
它不是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
答案 2 :(得分:1)
如果您允许使用awk
解决方案,则可以这样做:
awk -v RS='\n\n\n\n' 1 Text.txt
答案 3 :(得分:0)
以下代码仅删除三个(不少于或少于多个)连续的空行:
$ 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