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

1 command-line bash scripts

我想从另一个文件中删除包含字符串的文件中的所有行。所以我不想删除相同的行,没有,但如果它们共享另一个文件中的字符串,则删除所有行。并将其他文件中不包含字符串的行写入新文件。例子:

文件A:

bird, snake
dog, cat
rabbit,fox
eagle,dove
Run Code Online (Sandbox Code Playgroud)

文件乙:

dog
dove
Run Code Online (Sandbox Code Playgroud)

结果文件:

bird,snake
rabbit,fox
Run Code Online (Sandbox Code Playgroud)

请帮忙。

非常感谢。

hee*_*ayl 6

使用以下grep表达式:

grep -vFf file_B file_A
Run Code Online (Sandbox Code Playgroud)

这是一个测试:

$ 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
Run Code Online (Sandbox Code Playgroud)
  • -f将从文件中读取模式(每行一个),file_B在这种情况下
  • -F会将读取的模式file_B视为固定字符串,这意味着不会对模式进行进一步的模式操作
  • -v将打印不匹配的行,即file_A不包含来自file_B.

  • 如果它仍然无法正常工作,请 [edit](http://askubuntu.com/posts/608903/edit) 您的问题并从这两个文件中添加一些实际文件内容,如果这不起作用.. (3认同)