2개의 파일을 비교하고 일치하는 값을 새 파일로 인쇄합니다.

2개의 파일을 비교하고 일치하는 값을 새 파일로 인쇄합니다.

1,200만 줄이 포함된 파일이 있는데, 각 줄은 8개 부분으로 나누어져 있으며 모두 ";"로 구분되어 있습니다. 파일 1 예: AAA;BBB;CCC;DDD;EEE;FFF;GGGXX;HHH

각 라인에는 고유한 ID가 있으며 비용은 $7입니다. 다음과 같이 약 20,000개의 고유 ID를 나열하는 또 다른 파일(File2)이 있습니다. GGGXX; GGGXY; GGGXZ;

누구나 자신만의 루트가 있습니다.

File1의 전체 데이터 행을 포함하는 File2의 ID를 기반으로 새 파일을 생성하려면 결과가 필요합니다.

아래 코드를 사용하면 File2에 항목이 2개 이상 있을 때 작동하지 않는 것 같습니다.

awk -F ";" 'NR==FNR{a[$1]} ($7 in a){print}' File2.txt File1.txt

File2에 ID가 나열되는 방식에 문제가 있는 걸까요, 아니면 제가 뭔가 잘못하고 있는 걸까요?

답변1

원하는 출력을 얻으려면 다음 명령을 사용하십시오.

awk  -F "," 'NR==FNR {a[$7];next}($1 in a){print $1}' file1 file2 > newfile

관련 정보