2013-07-31 88 views
0

我有一個像這樣的文本文件[方括號中的行尾字符]。如何從文本文件中刪除空行

顯然有些事情在這裏錯了,我想刪除空行。我怎樣才能做到這一點?

我寧願bash解決方案,但也歡迎其他人。

717016|2026493|88650639|Agridex|Carrier|NR||V/V||NR|||1||NR||NR||NR[CR][LF] 
717016|2026493|88650639|Agridex|Carrier|NR||V/V||NR|||1||NR||NR||NR[CR][LF] 
717018|2026494|67685|Sulfinyl bis(methane)|Carrier|NR||NR||NR|||NR||NR||NR||10% OF CARRIER SOLUTION[CR] 
[CR][LF] 
[CR][LF] 
717019|2026494|57556|1,2-Propanediol|Carrier|NR||NR||NR|||NR||NR||NR||40% OF CARRIER SOLUTION[CR][LF] 
717016|2026493|88650639|Agridex|Carrier|NR||V/V||NR|||1||NR||NR||NR[CR][LF] 

這沒有工作(不知道爲什麼..):

sed -i '/^$/d' file.txt 

UPDATE 我期望的輸出是

717016|2026493|88650639|Agridex|Carrier|NR||V/V||NR|||1||NR||NR||NR[CR][LF] 
717016|2026493|88650639|Agridex|Carrier|NR||V/V||NR|||1||NR||NR||NR[CR][LF] 
717018|2026494|67685|Sulfinyl bis(methane)|Carrier|NR||NR||NR|||NR||NR||NR||10% OF CARRIER SOLUTION[CR][LF] 
717019|2026494|57556|1,2-Propanediol|Carrier|NR||NR||NR|||NR||NR||NR||40% OF CARRIER SOLUTION[CR][LF] 
717016|2026493|88650639|Agridex|Carrier|NR||V/V||NR|||1||NR||NR||NR[CR][LF] 

所以第三行結尾[CR] [LF]和第4 + 5行被刪除。

+0

我在Linux上,但很可能該文件是從窗戶。 – EDi

回答

1

使用\r表示LF:

sed '/^\r$/d' file 

或者,對該文件運行dos2unix擺脫換行的。

+0

我相信這隻適用於gnu sed,因爲OSX上的sed不喜歡這個命令。 – anubhava

+0

謝謝,這將刪除兩個[CR] [LF]行之一,但在空行之前的行中,我只有一個[CR]。查看我的更新。 – EDi

+0

'dos2unix'的作品! – EDi

0

試試這個sed命令:

sed -i.bak '/^ *'$'\r''*$/d' file 
0

記事本+報價(你提到別人歡迎!):

SO17967892 example

編輯澄清質疑:

首先用單個替換double [CR],然後用Edit編輯Lin e操作,刪除空行。

0

嘗試:

grep "|" textfile.txt > output.txt