カンマの前の文字列に一致する行を削除します

カンマの前の文字列に一致する行を削除します

私は bash スクリプトについてはまったくの初心者なので、どんな助けでもいただければ幸いです。以下は私が達成したいことです。

テキスト ファイルが 2 つあります。最初のファイルで、2 番目のファイルのコンマの前の文字列と一致する行をすべて削除します。

例えば

ファイル1:

this_is_a_test.txt,11dsdsdsdsd
this_is_a_test24.txt,545467ddd
this_is_a_test22,121244442

ファイル2:

this_is_a_test.txt
this_is_a_test24.txt
this_is_a_test22

希望する出力: 空白

答え1

以下を使用できます:

grep -vFf file2 file1

カンマの後ろは一致しますが、行は削除されることに注意してください。

答え2

簡単なsedトリックでこれを実現できます。

IFS='
' # If whitespaces exist in file 2
cat file2.txt | while read i; do
  sed -i '/^'"$i"',/d' file1.txt
done

関連情報