두 열 값이 별도 파일의 단일 열에 발생하는 경우 행 추출

두 열 값이 별도 파일의 단일 열에 발생하는 경우 행 추출

탭으로 구분된 두 개의 파일이 있습니다.

파일 1

123   456
135   567
234   478

파일 2

123    notimportant    notimportant2
456    notimportant    notimportant2
987    notimportant    notimportant2
135    notimportant    notimportant2
234    notimportant    notimportant2
478    notimportant    notimportant2

단일 행의 두 항목이 모두 file2의 첫 번째 열에 있는 경우 file1에서 행을 추출해야 합니다. 따라서 출력 파일은 다음과 같아야 합니다.

산출

123   456
234   478

이전에 file1의 첫 번째 열만 file2의 첫 번째 열과 일치하는 경우 행을 추출하기 위해 이 awk 명령을 사용했습니다.

awk 'FNR==NR{a[$1];next}($1 in a){print}' file2 file1

그런데 어떻게 연장해야 할지 모르겠어요.

답변1

awk 'FNR==NR{a[$1]++;next;}($1 in a)&&($2 in a){print}' file2 file1

perl -lane '
   @ARGV and $h{$F[0]}++,next;
   print if @F == grep { $h{$_} } @F;
' file2 file1

관련 정보