다음 내용이 포함된 파일(파일 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