如何使用sed删除三条空行?如何使用sed删除三重空行?
例如:
MyText.txt
line1 line2 line3 line4
配合使用的sed我想要的结果看起来像这样
MyText.txt
line1 line2 line3 line4
我能够删除双空行
sed -i '/^$/{ N /^\n$/D }' MyText.txt
但是我的目标是删除三重空行和三重空行。
任何帮助将不胜感激。
如何使用sed删除三条空行?如何使用sed删除三重空行?
例如:
MyText.txt
line1 line2 line3 line4
配合使用的sed我想要的结果看起来像这样
MyText.txt
line1 line2 line3 line4
我能够删除双空行
sed -i '/^$/{ N /^\n$/D }' MyText.txt
但是我的目标是删除三重空行和三重空行。
任何帮助将不胜感激。
,因为它是那么简单:
sed '1N;N;/^\n\n$/d;P;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
工作就像一个魅力,thx – 2011-01-10 21:57:56
这不是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
如果允许awk
解决方案,你可以做我像这样:
awk -v RS='\n\n\n\n' 1 Text.txt
这是很多很短,thx – 2011-01-11 22:28:50