2013-07-31 51 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