通过包含空格字符的Bash从文本文件中删除空行

时间:2017-01-09 04:16:23

标签: linux bash

我尝试使用'sed'命令删除空行。

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

我的示例txt文件看起来像这样。第二行有空格字符。 sed命令只删除空行而不删除带空格的行。

Sample text

Sample text

那么通过bash来实现这一点。

我的意图是

Sample text
Sample text

2 个答案:

答案 0 :(得分:4)

使用字符类[:blank:]来表示空格或制表符:

使用sed

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

使用perl

perl -ne 'print if !/^[[:blank:]]*$/' file.txt 

使用awk

awk '!/^[[:blank:]]*$/' file.txt 

使用grep

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

如果该工具不支持就地编辑,请利用临时文件,例如grep

grep -v '^[[:blank:]]*$' file.txt >file.txt.tmp && mv file.txt{.tmp,}

答案 1 :(得分:2)

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

或者也匹配其他空白字符,例如标签等:

sed -i '/^[[:space:]]*$/d' file.txt

*字符匹配0或更多前一个字符的实例