입력 파일이 있습니다
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 잘한 것 같습니다.