한 파일의 열을 다른 파일과 비교

한 파일의 열을 다른 파일과 비교

File1다음과 같은 데이터가 포함된 파일이 있습니다 .

aaa
bbb

다른 파일 의 데이터는 File2다음과 같습니다.

2,aaa,234
w,bbb,589
4,ccc,675

File1데이터를 열 2 데이터와 비교 File2하고 일치하는 데이터를 한 파일에 인쇄하고 일치하지 않는 데이터를 다른 파일에 인쇄 해야 합니다 .

답변1

awk -F '
  !b{a[$0]; next}
  $2 in a {print > "matching.txt"; next}
  {print > "non-matching.txt"}' file1 b=1 file2

또는 두 번의 패스를 만들고 파일이 조인 키를 기준으로 정렬된다고 가정하면 다음과 같습니다.

join -t , -2 2 -o 2.1,2.2,2.3 file1 file2 > matching.txt
join -t , -2 2 -v 2 -o 2.1,2.2,2.3 file1 file2 > non_matching.txt

답변2

cut이 문장은 올바른 필드를 선택하고 일치하는 항목을 찾는 데 사용됩니다 grep. 일치하는 항목과 일치하지 않는 항목은 각각 Matching및 라는 파일 에 추가됩니다 NonMatching.

for x in $(cut -d, -f2 File2); do grep -q "$x" File1 && echo "$x" >> Matching || echo "$x" >> NonMatching; done

답변3

다음은 레코드를 일치시키는 명령입니다.

awk -F, 'FNR==NR{f1[$1]=$0;next}$2  in f1{print $0}' OFS="," file1 file2 > matchedRecords.txt

관련 정보