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