删除数据集中的空行

时间:2011-11-25 10:53:08

标签: perl shell sed awk

我需要使用sed,awk或perl的一个衬垫来从我的数据文件中删除空白行。我文件中的数据如下所示 -

Aamir
Ravi 

Arun


Rampaul
Pankaj

Amit

Bianca

这些空白在我的数据文件中随机出现在任何地方。有人可以建议使用单行从我的数据集中删除这些空白行。

6 个答案:

答案 0 :(得分:6)

它可以通过多种方式完成。

例如awk:

awk '$0' yourFile

或sed:

sed '/^$/d' yourFile

或grep:

grep -v '^$' yourFile

答案 1 :(得分:4)

Perl解决方案。从命令行。

$ perl -i.bak -n -e'print if /\S/' INPUT_FILE

就地编辑文件并创建原始文件的备份。

答案 2 :(得分:2)

AWK解决方案:

这里我们遍历输入文件以检查它们是否有任何字段集。 NF是AWK的内置变量,设置为多个字段。如果该行为空,则不设置NF。在这一个衬管中,我们测试NF是否为真,即设置为一个值。如果是,那么我们打印该行,当模式为真时,该行隐含在AWK中。

awk 'NF' INPUT_FILE

SED解决方案:

此解决方案类似于作为答案提及的解决方案。如语法所示,我们不打印任何空白行。

sed -n '/^$/!p' INPUT_FILE

答案 3 :(得分:2)

对于perl它就像sed,awk或grep一样容易。

$ cat tmp / tmpfile 阿米尔 拉维

阿伦

Rampaul 的Pankaj

阿米特

比安卡

$ perl -i -pe' s {^ \ s * \ n $} {} 'tmp / tmpfile

$ cat tmp / tmpfile 阿米尔 拉维 阿伦 Rampaul 潘卡 阿米特 比安卡

答案 4 :(得分:1)

你可以这样做:

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

答案 5 :(得分:1)

Perl解决方案:

perl -ni.old -e 'print unless /^\s*$/' file

...创建原始文件的备份副本,后缀为'.old'