次のようなデータを含むファイルFile1
があります
aaa
bbb
そして、次のようなデータを含む別のファイルFile2
:
2,aaa,234
w,bbb,589
4,ccc,675
File1
データをFile2
のcolumn2データと比較し、一致を1つのファイルに出力し、一致しないものを別のファイルに出力する必要があります。
awk -F '
!b{a[$0]; next}
$2 in a {print > "matching.txt"; next}
{print > "non-matching.txt"}' file1 b=1 file2
または、2つのパスを使用して、ファイルが結合キーでソートされると仮定します。
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
このワンライナーは、cut
を使用して適切なフィールドを選択し、grep
を使用して一致を検索します。一致および非一致は、それぞれMatching
およびNonMatching
という名前のファイルに追加されます。
for x in $(cut -d, -f2 File2); do grep -q "$x" File1 && echo "$x" >> Matching || echo "$x" >> NonMatching; done
レコードを照合するコマンドは次のとおりです-
awk -F, 'FNR==NR{f1[$1]=$0;next}$2 in f1{print $0}' OFS="," file1 file2 > matchedRecords.txt