2010-12-23 156 views
21

我知道在SO How can I replace mutliple empty lines with a single empty line in bash?中有類似的問題。但我的問題是,這可以通過使用sed命令來實現嗎?我可以使用sed命令將多個空行替換爲一個空行嗎?

由於

+0

要讀所有的答案在下一次:http://stackoverflow.com/questions/922449/how-can-i-replace-mutliple-empty-lines-with -a-single-empty-line-in-bash/922499#922499 – OrangeDog 2010-12-23 17:47:58

+0

其實我已經讀過所有的答案。 Clue Less和Can BerkGüder提供的答案只是刪除所有空行,與我所需要的不同。 – 2010-12-23 17:57:19

回答

36

這給一試:

sed '/^$/N;/^\n$/D' inputfile 
1

可以通過先去除空行,並與ģ追加線空間命令這樣做:

sed '/^$/d;G' text.txt 

EDIT2:上述命令將添加的每個之間的空行如果這不是你想要的,你可以這樣做:

sed -n '1{/^$/p};{/./,/^$/p}' 

或者,如果你不介意,所有領先的空行會被剝離,也可以寫爲:

sed -n '/./,/^$/p' 

,因爲第一個表達式只進行第一線,並打印出來,如果它是空白。

這裏:-n選項禁止圖案空間自動打印,/./,/^$/限定至少一個字符,沒有字符之間的範圍內(換行之間即空的空間)和p告訴打印此範圍。

相關問題