2014-10-09 63 views
-3

行我有一個文本文件看起來像這樣:刪除「孤獨」從文本文件

>>>aaaaaaaaaaaaaaaaaaaaaaa 
aaaaaaaaaaaaaaaaaaaaaaaaaa 
aaaaaaaaaaaaaaaaaaaaaaaaaa 

>>>aaaaaaaaaaaaaaaaaaaaaaa 

>>>aaaaaaaaaaaaaaaaaaaaaaa 
aaaaaaaaaaaaaaaaaaaaaaaaaa 

>>>aaaaaaaaaaaaaaaaaaaaaaa 

>>>aaaaaaaaaaaaaaaaaaaaaaa 
aaaaaaaaaaaaaaaaaaaaaaaaaa 

即由「團體」的頁眉開始>>>文件。正如你所看到的,一些組是空的 - 只包含一個標題,我希望它們被刪除。結果應該是:

>>>aaaaaaaaaaaaaaaaaaaaaaa 
aaaaaaaaaaaaaaaaaaaaaaaaaa 
aaaaaaaaaaaaaaaaaaaaaaaaaa 

>>>aaaaaaaaaaaaaaaaaaaaaaa 
aaaaaaaaaaaaaaaaaaaaaaaaaa 

>>>aaaaaaaaaaaaaaaaaaaaaaa 
aaaaaaaaaaaaaaaaaaaaaaaaaa 

有沒有完成它,最好使用標準的bash路費S.A的awk,sed的,grep的等任何方便的方式?

Thankyouverymuch提前!

+3

&你到目前爲止試過了什麼? – anishsane 2014-10-09 10:14:37

回答

1

這應該這樣做:

awk '/.+/ { if (h) {print h; c++; print}} 
    /^>>>/ {h=$0; c=0} 
    /^$/ { if (c>0) print; h=false}' 

但下次你應該表現出的東西,你已經

+0

謝謝!這工作,是優雅和清晰,足以讓我理解沒有進一步解釋(不需要打擾@anishsane)。 至於沒有顯示我已經嘗試過的東西的原因,我在awk中完全禁用,只用於簡單的列操作,根本無法提供任何東西。 – brtk 2014-10-09 12:15:46

1
awk '{if (split($0,a,"\n")>1)print}' RS= ORS=$'\n\n' test.txt 
+1

當您更新有關您的編碼嘗試的問題後,請評論此答案,以便我將此代碼的解釋。 – anishsane 2014-10-09 10:15:36

1

試圖用sed的,你可以這樣寫:

sed -n '/^>>>/{h;n;/^$/!{H;g;p};d};/^>>>/!p;' file.txt 

,或者如果您肯定所有的塊都用兩條換行符分開:

sed -n '/^>>>/{h;n;/^$/!{H;g;p};d};p;' file.txt