perl 删除数据集中的空行

vohkndzv  于 2022-11-15  发布在  Perl
关注(0)|答案(6)|浏览(285)

我需要一个使用sed、awk或perl的单行程序来删除数据文件中的空行。

Aamir
Ravi 

Arun

Rampaul
Pankaj

Amit

Bianca

这些空白是随机的,出现在我的数据文件中的任何地方。有人能推荐一个单行程序来从我的数据集中删除这些空白行吗?

kdfy810k

kdfy810k1#

它可以通过许多方式来实现。
例如使用awk:

awk '$0' yourFile

或sed:

sed '/^$/d' yourFile

或grep:

grep -v '^$' yourFile
jm81lzqq

jm81lzqq2#

Perl解决方案。从命令行。

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

现地编辑档案并建立原始档案的备份。

mjqavswn

mjqavswn3#

AWK解决方案:

这里我们遍历输入文件,检查是否有字段设置。NF是AWK的内置变量,设置为字段的数量。如果行为空,则NF未设置。在这一行中,我们测试NF是否为真,即设置为一个值。如果是,则打印该行,当模式为真时,该行在AWK中是隐式的。

awk 'NF' INPUT_FILE

SED解决方案:

这个解决方案类似于前面提到的答案。正如语法所示,我们不打印任何空白行。

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

gorkyyrv4#

您可以:

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

0ejtzxu15#

Perl解决方案:

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

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

cygmwpex

cygmwpex6#

对于perl,它与sed、awk或grep一样简单。

$ cat tmp/tmpfile
Aamir
Ravi

Arun

Rampaul
Pankaj

Amit

Bianca

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

$ cat tmp/tmpfile
Aamir
Ravi
Arun
Rampaul
Pankaj
Amit
Bianca

相关问题