file1の最初の列の文字列がfile2にあるかどうかを確認するには?

file1の最初の列の文字列がfile2にあるかどうかを確認するには?

カンマで区切られた文字列を含む2つのファイルがありますfile1.txt

1.1.1.1,string1,comment1
7.7.7.7,string3,comment3
2.2.2.2,string2,comment2
88.88.88.88,string4,comment4
999.999,999,999,string5,comment5

2番目のファイルには、file2.txt最初の列に表示できる文字列が含まれていますfile1.txtfile1.txt最初の列の文字列がに表示されたら、行全体を削除する必要がありますfile2.txt。元のファイルを変更したくありませんが、出力を新しいファイルに入れたいです。

答え1

なぜ簡単ではないのですか?

grep -vffile2 file1
-f FILE: Obtain patterns from FILE, one per line.
-v:      Invert the sense of matching, to select non-matching lines.

答え2

次のことを試してみてください。

#!/bin/bash 
cat file2.txt | while IFS=, read line; do

sed -i "/$(grep $line file1.txt)/d" file1.txt

done

これにより、file1.txtが直接変更されますが、元のファイルのバックアップコピーを保存するsed -iようにコマンドを変更できます。sed -i.ibk

例えば

$cat file2.txt 
1.1.1.1
7.7.7.7

$cat file1.txt 
1.1.1.1,string1,comment1
7.7.7.7,string3,comment3
2.2.2.2,string2,comment2
88.88.88.88,string4,comment4
999.999,999,999,string5,comment5

output 
2.2.2.2,string2,comment2
88.88.88.88,string4,comment4
999.999,999,999,string5,comment5

関連情報