我有一个看起来像这样的文本文件:
>>>aaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaa
>>>aaaaaaaaaaaaaaaaaaaaaaa
>>>aaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaa
>>>aaaaaaaaaaaaaaaaaaaaaaa
>>>aaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaa
即。由“groups”组成的文件,其标题以>>>开头。正如你所看到的,有些组是空的 - 只包含一个标题,我希望它们被删除。结果应该是:
>>>aaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaa
>>>aaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaa
>>>aaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaa
有没有方便的方法来完成它,最好是使用标准的bash tolls s.a awk,sed,grep等?
提前谢谢!
答案 0 :(得分:1)
awk '{if (split($0,a,"\n")>1)print}' RS= ORS=$'\n\n' test.txt
答案 1 :(得分:1)
这应该做:
awk '/.+/ { if (h) {print h; c++; print}}
/^>>>/ {h=$0; c=0}
/^$/ { if (c>0) print; h=false}'
但是下次你应该展示你已经尝试过的东西
答案 2 :(得分:1)
使用sed,你可以这样写:
sed -n '/^>>>/{h;n;/^$/!{H;g;p};d};/^>>>/!p;' file.txt
或者如果您确定所有块都用两个换行符分隔:
sed -n '/^>>>/{h;n;/^$/!{H;g;p};d};p;' file.txt