両方のファイルで重複した項目を検索および削除する

両方のファイルで重複した項目を検索および削除する

たとえば、30,000個のバーコードを含むFile1ファイルがあります。

A6KAIIYY
A6KFNRGY
X6LPXV55
X6LQ5217

file1を読み、35,000個のバーコードを含む他のファイル(file2)から各バーコードを検索し、見つかったらその行を削除する必要があります。シェルスクリプトを書く方法はありますか?

答え1

grep+mv解決策:

grep -vf file1 file2 > /tmp/f2_tmp && mv /tmp/f2_tmp file2
  • -v- 一致しない行を選択
  • -f FILE- モードのインポートFILE
  • /tmp/f2_tmp- 一時ファイル

答え2

file1のすべてのバーコードがfile2にある場合は、2つのファイルを連結してソートしてから、一意の行uniq -u(file1にないfile2の行)のみを印刷するために使用されます。

cat file file2 | sort | uniq -u

それ以外の場合は、各ファイルがソートされ、 を使用してdiff file1 file2ファイル 1 のバーコードにのみ '<' プレフィックスが付けられ、ファイル 2 のバーコードにのみ '>' プレフィックスが付けられます。

diff file1 file2 | grep -e '^> ' | sed 's/^> //'

関連情報