我需要使用sed,awk或perl的一个衬垫来从我的数据文件中删除空白行。我文件中的数据如下所示 -
Aamir
Ravi
Arun
Rampaul
Pankaj
Amit
Bianca
这些空白在我的数据文件中随机且出现在任何地方。有人可以建议使用单行从我的数据集中删除这些空白行。
答案 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'