如果列为空则跳过行

try*_*elf -1 awk text-processing

我在筛选 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
Run Code Online (Sandbox Code Playgroud)

我想要输出:

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
Run Code Online (Sandbox Code Playgroud)

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

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

awk -F: '{if($4 != "") print}'
awk -F '$4 != ""'
awk -F , '$4 != "\"\"" {print}'
Run Code Online (Sandbox Code Playgroud)

Ed *_*ton 7

awk 'NF==4' file
Run Code Online (Sandbox Code Playgroud)

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

awk -F'\t' '$4!=""' file
Run Code Online (Sandbox Code Playgroud)

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

  • $4 可能是非空值零。 (5认同)