如何删除文件中包含另一个文件中的字符串的所有行

如何删除文件中包含另一个文件中的字符串的所有行

我想删除一个文件中包含另一个文件中的字符串的所有行。因此,我不想删除相同的行(没有相同的行),而是删除所有共享另一个文件中的字符串的行。并将不包含另一个文件中的字符串的行写入新文件。示例:

文件 A:

bird, snake
dog, cat
rabbit,fox
eagle,dove

文件 B:

dog
dove

结果文件:

bird,snake
rabbit,fox

请帮忙。

多谢。

答案1

使用以下grep表达式:

grep -vFf file_B file_A

这是一个测试:

$ cat file_A 
bird, snake
dog, cat
rabbit,fox
eagle,dove

$ cat file_B 
dog
dove

$ grep -vFf file_B file_A 
bird, snake
rabbit,fox
  • -f将从文件中读取模式(每行一个),file_B在本例中
  • -F将把读取的模式file_B视为固定字符串,这意味着不会对模式进行进一步的模式操作
  • -v将打印不匹配的行,即file_A不包含来自的模式的行file_B

相关内容