한 파일의 여러 열을 다른 파일의 한 열과 비교하고 두 번째 파일의 일치 항목을 표시하려면 어떻게 해야 합니까?

한 파일의 여러 열을 다른 파일의 한 열과 비교하고 두 번째 파일의 일치 항목을 표시하려면 어떻게 해야 합니까?

다음과 같은 두 개의 파일이 있습니다.

파일 1

apple fruit 10 4
strawberry fruit 22 11
berry fruit 33 33
ball toy 1 12
straw thing 2 33

파일 2

strawberry straw berry
rawberry raw berry

파일 2의 열 1을 파일 1의 열 1과 비교하고, 파일 2의 열 2를 파일 1의 열 1과, 파일 2의 열 3을 파일 1의 열 1과 비교하고 싶습니다. 일치하는 항목이 발견되면 파일 1에 일치하는 세 줄을 모두 표시하고 싶습니다.

여기서 출력은 다음과 같아야 합니다.

strawberry fruit 22 11
straw thing 2 33
berry fruit 33 33

어떻게 해야 하나요?

답변1

$ awk 'NR==FNR{a[$1]=$0} $1 in a && $2 in a && $3 in a{print a[$1] ORS a[$2] ORS a[$3]}' file1 file2
strawberry fruit 22 11
straw thing 2 33
berry fruit 33 33
  • 첫 번째 열을 기준으로 행을 저장한 file1다음 file2세 개의 열 행이 모두 일치하면 일치하는 행을 인쇄합니다.

관련 정보