我想知道是否有任何命令可以查找文本文件的空白字段值并删除整行。
例子
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