如果列为空则跳过行

如果列为空则跳过行

我在筛选 4 列中有空行的行时遇到问题。

输入:

1242    2021-11-22     Text     5.0
1242    2021-11-22     Text
1242    2021-11-22     Text     5.0
1242    2021-11-22     Text     5.0
4095    2021-11-22     Text
4095    2021-11-22     Text     5.0
4095    2021-11-22     Text
4095    2021-11-22     Text     5.0
4095    2021-11-22     Text
4095    2021-11-22     Text     5.0

我想要输出:

1242    2021-11-22     Text     5.0
1242    2021-11-22     Text     5.0
1242    2021-11-22     Text     5.0
4095    2021-11-22     Text     5.0
4095    2021-11-22     Text     5.0
4095    2021-11-22     Text     5.0

文件大小为 2.0Gb,行数约为 45m。

我已经尝试过这些,但没有一个起作用 - 它返回空或相同的文件:

awk -F: '{if($4 != "") print}'
awk -F '$4 != ""'
awk -F , '$4 != "\"\"" {print}'

答案1

awk 'NF==4' file

或者如果您Text可以包含空格,则:

awk -F'\t' '$4!=""' file

如果这不是您所需要的全部,那么编辑您的问题以提供更真正具有代表性的示例输入/输出,包括不适用于的情况。

答案2

awk '$4 !~ /^$/' filename

1242    2021-11-22     Text     5.0
1242    2021-11-22     Text     5.0
1242    2021-11-22     Text     5.0
4095    2021-11-22     Text     5.0
4095    2021-11-22     Text     5.0
4095    2021-11-22     Text     5.0

相关内容