如何从文本文件中删除空行

时间:2013-07-31 10:27:36

标签: bash text-files newline

我有一个这样的文本文件[方括号中的行尾字符]。

显然这里有些错误,我想删除空行。我怎么能这样做?

我更喜欢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

更新 我想要的输出是

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行被删除。

4 个答案:

答案 0 :(得分:1)

使用\r代表LF:

sed '/^\r$/d' file

或者,在文件上运行dos2unix以删除换行符。

答案 1 :(得分:0)

尝试使用此sed命令:

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

答案 2 :(得分:0)

Notepad ++ offer(你提到欢迎其他人):

SO17967892 example

编辑以澄清问题:

首先用单个替换双[CR],然后用编辑,行操作,删除空行。

答案 3 :(得分:0)

尝试:

grep "|" textfile.txt > output.txt