使用 awk 排除定义模式

ziu*_*fer 2 bash awk

我有一个包含两列的文件,并且仅当在第二列中找不到确定的模式时才想打印第一列,该文件可以是例如:

3   0.
5   0.
4   1.
3   1.
10  0.
Run Code Online (Sandbox Code Playgroud)

并且我想仅在第二个文件中没有数字 1. 时才打印第一列中的值,即

3
5
10
Run Code Online (Sandbox Code Playgroud)

我知道要打印我可以使用的第一列

awk  '{print $1}' fileInput >> fileOutput
Run Code Online (Sandbox Code Playgroud)

是否有可能在某个地方有一个 if 块?

fed*_*qui 6

一般来说,你只需要指明你不想匹配的模式:

awk '! /pattern/' file
Run Code Online (Sandbox Code Playgroud)

在这种特定情况下,您要打印第 2 列不是“1”的行的第 1 列,您可以说:

$ awk '$2 != "1." {print $1}' file
3
5
10
Run Code Online (Sandbox Code Playgroud)

当条件完成时,{print $1}将执行,这样您将拥有文件的第一列。