awk 특정 열의 패턴이 일치하면 열 데이터를 인쇄합니다.

awk 특정 열의 패턴이 일치하면 열 데이터를 인쇄합니다.

입력 파일이 있습니다

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 잘한 것 같습니다.

관련 정보