我有输入文件
ABC 123 DEF 456
ZYX 098 WVU 765
PQR 111 RST 333
现在我尝试如果模式在第 1 列中匹配则显示第 3 列和第 4 列,如果模式在第 1 列中匹配则显示第 1 列和第 2 列。
awk '{{for(i=1;i<=NF;i++)if($i == "ABC") printf $(i+2)" "$(i+3)" "} print ""; }'
这完成了工作,但输入将是一个变量,所以我不知道它是否会匹配第 1 列或第 3 列。
x=ABC or x=DEF
awk -v x="$x" '{{for(i=1;i<=NF;i++)if($i==x) printf $(i+2)" "$(i+3)" "} print ""; }'
(取决于 x 的输入值,所以如果我也可以比较 Field no ,它应该可以完成这项工作)
x=ABC 时的预期输出
DEF 456
如果 x=DEF
ABC 123
每行依此类推......
答案1
awk -vx="$x" '$1 == x {print $3, $4} $3 == x {print $1, $2}'
@don_crissti 这似乎做得很好。