awk 문자열 일치 2개 열

awk 문자열 일치 2개 열

다음 내용이 포함된 파일(파일 1)이 있습니다.

2  test1
3  test2 
2  test3 
1  test1 
4  test2

메인 파일(file2)도 있습니다:

2    test1
3  test1
4         test1
2  test2
3 test2
4   test2
5 test2 
...

파일 1의 열 1과 열 2가 일치할 때 파일 2의 모든 행을 인쇄하고 싶습니다. 파일 2의 임의 형식을 유지하고 싶습니다. 가장 좋은 접근 방식은 무엇입니까?

답변1

노력하다

awk 'NR==FNR { a[$1 $2]=1 ; } NR>FNR { if ( $1 $2 in a ) print ;}'

어디

  • NR==FNR레코드 수 == 파일의 레코드 수(첫 번째 파일에 있음)
  • { a[$1 $2]=1 ; }키 저장(공백이 연결되지 않음)
  • NR>FNR(우리는 두 번째 파일에 있습니다)
  • if ( $1 $2 in a )인덱스가 존재한다면...
  • print이 줄을 인쇄하세요.

어느 것이 당신에게 샘플을 제공합니까?

2    test1
3 test2
4   test2

답변2

awk 'n[$1][$2]++'   file1 file2

두 파일 모두에 중복이 없다고 가정합니다.

답변3

perl -lane '@ARGV and $h{"@F"}++,next; print if $h{"@F"}' file1 file2

산출

2    test1
3 test2
4   test2

관련 정보