删除与逗号之前的字符串匹配的行

删除与逗号之前的字符串匹配的行

我对 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

相关内容