入力ファイルがあります
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の入力値に依存するため、フィールド番号も比較できる場合は操作を実行する必要があります)
x = ABCのときに予想される出力
DEF 456
x=DEFの場合
ABC 123
そして各行ごとに...
答え1
awk -vx="$x" '$1 == x {print $3, $4} $3 == x {print $1, $2}'
@don_crissti うまくいったようです。