awk:根据另一列的值打印一列或另一列

时间:2017-07-31 19:59:45

标签: awk gawk

awk的输入有多列。 我想打印列$ x或列$ y,具体取决于列$ z的值。

例如: 输入是

3 2 1
4 5 6

如果第三列为1,我想打印第一列,否则打印第二列。

输出应为

3
5

2 个答案:

答案 0 :(得分:3)

首先是一些测试数据:

$ cat > file
1 2 2
1 2 1

使用条件运算符:

$ awk '{print ($3==1?$1:$2)}' file
2
1

如果第三个字段的值为1,则输出第一个字段的值,否则输出第二个字段值。

答案 1 :(得分:0)

在模式中使用if-else语句

awk '{if($3 == 1) {x = 1} else {x = 2}; {print $x}}'