grep 从一个而不是另一个

cri*_*pto 2 unix terminal rsync

如何从另一个文件中 grep OUT 文件的内容

假设我有一个文件“file1”,它有

a
b
c
Run Code Online (Sandbox Code Playgroud)

和另一个文件“file2”

a
b
c
d
e
f
Run Code Online (Sandbox Code Playgroud)

我通常会这样做

cat file2 | grep -v a | grep -v b | grep -v c 
Run Code Online (Sandbox Code Playgroud)

有没有办法用文件来做到这一点

grep -v file2 file1
Run Code Online (Sandbox Code Playgroud)

Nic*_*ton 5

使用diff查找差异和sed选择,格式和打印刚刚添加的行:

diff file1 file2 | sed -n "/^>/{s/> //;p}"
Run Code Online (Sandbox Code Playgroud)

添加:

如果文件的顺序不同,则sort首先是diff它们,然后是它们。

sort file1 > file1.s
sort file2 > file2.s
diff file1.s file2.s | sed -n "/^>/{s/> //;p}"
Run Code Online (Sandbox Code Playgroud)

如果您正在使用bash,则可以使用<(...)进程替换:

diff <(sort file1) <(sort file2) | sed -n "/^>/{s/> //;p}"
Run Code Online (Sandbox Code Playgroud)