刪除與逗號之前的字串相符的行

刪除與逗號之前的字串相符的行

我對 bash 腳本非常陌生,因此我們將不勝感激。以下是我想要實現的目標。

我有兩個文字檔。我想刪除第一個文件中與第二個文件中逗號之前的任何字串相符的所有行。

例如

文件一:

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

相關內容