たとえば、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/^> //'