我有一个包含两列的文件,并且只有在第二列中找不到确定的模式时才想打印第一列,例如文件可以:
3 0.
5 0.
4 1.
3 1.
10 0.
我只想在第二个文件中没有数字1的情况下打印第一列中的值,即
3
5
10
我知道打印我可以使用的第一列
awk '{print $1}' fileInput >> fileOutput
是否可以在某个地方设置if块?
答案 0 :(得分:3)
您可以添加条件$2 != "1."
以检查第二列是否为1.
:
$ awk '$2 != "1." {print $1}' file
3
5
10
完成条件后,将执行{print $1}
,以便您拥有该文件的第一列。
答案 1 :(得分:2)
在这种特殊情况下,因为1
评估为true
而0
评估为false
,您可以这样做:
awk '!$2 { print $1 }' file
3
5
10
{ }
之前的部分是执行命令的条件。在这种情况下,!$2
表示not
第2列为true
(即第2列为false
)。
编辑:即使是尾随点,情况仍然如此。事实上,所有这三种解决方案都有效:
bash-4.2$ cat file
3 0.
5 0.
4 1.
3 1.
10 0.
bash-4.2$ awk '!$2 { print $1 }' file # treat column 2 as a boolean
3
5
10
bash-4.2$ awk '$2 != "1." {print $1}' file # treat column 2 as a string
3
5
10
bash-4.2$ awk '$2 != 1 {print $1}' file # treat column 2 as a number
3
5
10