Grep 并删除具有空白字段值的行

Grep 并删除具有空白字段值的行

我想知道是否有任何命令可以查找文本文件的空白字段值并删除整行。

例子

 Hello:Its Me
 Hello:How are you
 Hello:
 Hello:Bye

和预期输出

 Hello:Its Me
 Hello:How are you
 Hello:Bye

答案1

非常标准的情况,最简单的解决方案awk

awk -F: '$2 != ""' file

grep

grep :. file 

答案2

如果你想跳过Hello:几行,你可以使用类似的东西:

awk -F: '{if($2 != "") print }' input_file 

答案3

至少对于 GNU awk,我认为对于任何版本的 awk,当某些内容评估为时的默认操作true是打印。因此,如果将字段分隔符设置为:,以打印具有第二个字段的行,则您需要做的就是:

$ awk -F: '$2' file
Hello:Its Me
Hello:How are you
Hello:Bye

但是,这也会打印第二个字段为空格(空格或制表符等)的情况,但会不是0如果第二个字段是一个或多个s,则打印该行,因为awk将其计算为 false。

答案4

有时定义删除条件 ( grep -v) 更容易。当最后一个字段为空时删除示例:

grep -v ':$' file

相关内容