无法使用sed正则表达式删除空行

时间:2012-05-25 13:57:15

标签: regex sed linefeed

我有一个这样的文件:

2733617     3.00    3   3

2733617 E1b1    8.00    8   16
2733617 E1b1b1b 2.00    2   4

2733617 I1  294.00  296 590
2733617 I2  1.00    1   2

2733617 I2a1    2.00    2   4

sed '/^$/d'对我不起作用。 Outfile看起来就像infile。它应该删除空行。

4 个答案:

答案 0 :(得分:3)

不幸的是,手册说使用像[!-~]这样的范围是不安全的。但是,只使用:print:打印包含可打印字符的行最终为我工作:

sed -n '/[[:print:]]/p'

答案 1 :(得分:2)

由于“空白”行中似乎存在未知的不可打印字符,因此您可以重新编写sed命令,以仅显示包含可打印字符的行:

sed -n '/[!-~]/p'

答案 2 :(得分:2)

删除空行:

sed '/^[[:space:]]*$/d'

答案 3 :(得分:0)

您也可以尝试:

 sed -n '/^./p'

仅打印在行的开头至少有一个char的行。 (BTW sed '/^$/d'适合我)