2017-07-31 184 views
0

awk的输入具有多列。 我想根据列$ z的值打印列$ x或列$ y。awk:根据另一列的值打印一列或另一列

例如: 输入是

3 2 1 
4 5 6 

我想打印第一列,如果第三列是1,否则输出第二列中。

输出应该是

3 
5 
+0

类似的问题[Q1](https://stackoverflow.com/questions/15160241/awk-print-columns-based-on-values-of-another - 列)和[q2](https://stackoverflow.com/questions/14739057/awk-print-column-3-if-2-a-specific-value)。但他们打印或不打印一列。我想根据条件打印不同的列。 –

回答

3

首先一些测试数据:

$ cat > file 
1 2 2 
1 2 1 

使用条件运算符:

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

如果第三字段的值是1时,输出的值第一场的值,否则第二场的值。

0

在模式使用if-else声明

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