2011-11-11 43 views
4

我可以使用sed /^$/d <file>刪除文件中的所有空白行,但如果我只想打印所有空行,該怎麼辦?命令sed /^$/p <file>打印文件中的所有行。

我想這樣做的原因是我們使用EDA程序(遠征),它使用正則表達式在網絡名稱上運行規則。我試圖找到一種方法來搜索所有沒有分配名稱的網絡。我認爲使用^$會起作用,但它只是最終找到所有的網絡,這也是/^$/p所做的。那麼有沒有不同的方式來做到這一點?

回答

17

除非另有規定sed將打印模式空間時,它已經處理完它。如果仔細觀察輸出,您會注意到文件中的每一行都會有2個空行。您必須使用-n命令行開關來停止打印。

sed -n /^$/p infile 

應該如你所願。

+1

+ 1指向該聯機幫助頁 – voretaq7

1

您還可以使用grep爲:

grep '^$' infile 
2

默認情況下,sed打印每一行,所以p標誌是無用的。爲了使它有用,你需要給sed -n開關。事實上,以下似乎做你想要的!

sed -n /^$/p 
1

想以另一種方式,不要p,但ð

,你可以嘗試:

sed '/^$/!d' yourFile