>

다음과 같은 파일 (파일 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가 일치 할 때 file2의 모든 줄을 인쇄하고 싶습니다. 파일 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
    
    

관련 자료

  • 이전 directory - 리눅스/유닉스 트리 다이어그램
  • 다음 grep을 사용하는 find 명령의 출력을 로그 파일로 어떻게 리디렉션합니까?