2012-12-20 82 views
6

我需要从文件中删除空行(仅限空格 - 非空记录)。从文件中删除空行

下面的命令仅适用于空行,但不是在 空间情况:

sed '/^$/d' filename

可不可以用grep来完成?

+0

检查这里:HTTP://theunixshell.blogspot.com/2013/01/deleting-empty-lines-from -file.html – Vijay

回答

12

使用\s*为只含有空格的空行:

sed '/^\s*$/d' file 

要保存更改回原来的文件使用-i选项:

sed -i '/^\s*$/d' file 

编辑:

正则表达式^\s*$比赛只包含空格的行,grep -v打印行与给定的模式不匹配下面将打印所有无黑线:

grep -v '^\s*$' file 
+0

它比thanxx ........ –

+0

如果你知道空白行没有空格,那么你可以将grep减少到'grep。 file'。 –

+1

只是为了完整性:'awk'NF'文件' –

0

事有凑巧,该文件是从sed命令(sed的“/^$/d”富)没有正确运行Windows机器复制。

我跑下面的命令,它的工作。

$ DOS2UNIX的富

1
sed -i '/^[ \t]*$/d' file-name 

它会删除其所有,但并不是所有的空行。的空白(空格或制表符),即(0或更多)在文件中..

注:没有后跟方括号里面“\ T”一个“空间” ...

-i “将强制将更新后的内容写回文件中......没有此标志,您可以看到屏幕上的空行被删除,但实际文件不会受到影响。

1

POSIX可移植的方式来做到这一点是

sed -i '/^[[:blank:]]*$/d' file 

grep -v '^[[:blank:]]*$' file