Linux:为什么我可以';是否显示这两个文件之间的差异线?

Linux:为什么我可以';是否显示这两个文件之间的差异线?,linux,bash,file,compare,Linux,Bash,File,Compare,我想比较两个文件并显示这两个文件之间不同的行。我试过一些方法,但我不能做到这一点 我有第一个文件: frvmx0000423 ansible-test-relay-do-not-delete frvmx0000434 frvmt0003036 frvmx0000661 rhel6918111243 frvmx0000416 frvmt0003040 mcds-test-303 jmt201 fb-demo5 frvmx0000635 cb003 rhel7511130951 rhel751113

我想比较两个文件并显示这两个文件之间不同的行。我试过一些方法,但我不能做到这一点

我有第一个文件:

frvmx0000423
ansible-test-relay-do-not-delete
frvmx0000434
frvmt0003036
frvmx0000661
rhel6918111243
frvmx0000416
frvmt0003040
mcds-test-303
jmt201
fb-demo5
frvmx0000635
cb003
rhel7511130951
rhel7511130956
vlpchh08
mcds-test-301
frvmx0000576
frvmx0000683
frvmx0000654
frvmx0000685
frvmx0000446
vlplin01
frvmx0000687
rhel69611917
frvmx0000622
rhel7511161022
vlpijl03
vlpedu03
第二个文件:

frvmx0000683
frvmx0000576
ansible-test-relay-do-not-delete
vlpedu03
frvmx0000687
frvmx0000685
frvmx0000654
frvmt0003299
mcds-test-301
cb003
mcds-test-303
FRVMT0003040
cb004
frvmx0000661
frvmt0003036
我想要这个输出,即文件之间不同的行:

frvmx0000423
frvmx0000434
rhel6918111243
frvmx0000416
jmt201
fb-demo5
frvmx0000635
rhel7511130951
rhel7511130956
vlpchh08
frvmx0000446
vlplin01
rhel69611917
frvmx0000622
rhel7511161022
vlpijl03
但是当我尝试使用diff命令时:

diff --suppress-common-lines file1 file2
输出为:

1,15c1,29
< frvmx0000683
< frvmx0000576
< ansible-test-relay-do-not-delete
< vlpedu03
< frvmx0000687
< frvmx0000685
< frvmx0000654
< frvmt0003299
< mcds-test-301
< cb003
< mcds-test-303
< FRVMT0003040
< cb004
< frvmx0000661
< frvmt0003036
---
> frvmx0000423
> ansible-test-relay-do-not-delete
> frvmx0000434
> frvmt0003036
> frvmx0000661
> rhel6918111243
> frvmx0000416
> frvmt0003040
> mcds-test-303
> jmt201
> fb-demo5
> frvmx0000635
> cb003
> rhel7511130951
> rhel7511130956
> vlpchh08
> mcds-test-301
> frvmx0000576
> frvmx0000683
> frvmx0000654
> frvmx0000685
> frvmx0000446
> vlplin01
> frvmx0000687
> rhel69611917
> frvmx0000622
> rhel7511161022
> vlpijl03
> vlpedu03
FRVMT0003040
ansible-test-relay-do-not-delete
ansible-test-relay-do-not-delete
cb003
cb003
cb004
fb-demo5
frvmt0003036
frvmt0003036
frvmt0003040
frvmt0003299
frvmx0000416
frvmx0000423
frvmx0000434
frvmx0000446
frvmx0000576
frvmx0000576
frvmx0000622
frvmx0000635
frvmx0000654
frvmx0000654
frvmx0000661
frvmx0000661
frvmx0000683
frvmx0000683
frvmx0000685
frvmx0000685
frvmx0000687
frvmx0000687
jmt201
mcds-test-301
mcds-test-301
mcds-test-303
mcds-test-303
rhel6918111243
rhel69611917
rhel7511130951
rhel7511130956
rhel7511161022
vlpchh08
vlpedu03
vlpedu03
vlpijl03
vlplin01
输出为:

1,15c1,29
< frvmx0000683
< frvmx0000576
< ansible-test-relay-do-not-delete
< vlpedu03
< frvmx0000687
< frvmx0000685
< frvmx0000654
< frvmt0003299
< mcds-test-301
< cb003
< mcds-test-303
< FRVMT0003040
< cb004
< frvmx0000661
< frvmt0003036
---
> frvmx0000423
> ansible-test-relay-do-not-delete
> frvmx0000434
> frvmt0003036
> frvmx0000661
> rhel6918111243
> frvmx0000416
> frvmt0003040
> mcds-test-303
> jmt201
> fb-demo5
> frvmx0000635
> cb003
> rhel7511130951
> rhel7511130956
> vlpchh08
> mcds-test-301
> frvmx0000576
> frvmx0000683
> frvmx0000654
> frvmx0000685
> frvmx0000446
> vlplin01
> frvmx0000687
> rhel69611917
> frvmx0000622
> rhel7511161022
> vlpijl03
> vlpedu03
FRVMT0003040
ansible-test-relay-do-not-delete
ansible-test-relay-do-not-delete
cb003
cb003
cb004
fb-demo5
frvmt0003036
frvmt0003036
frvmt0003040
frvmt0003299
frvmx0000416
frvmx0000423
frvmx0000434
frvmx0000446
frvmx0000576
frvmx0000576
frvmx0000622
frvmx0000635
frvmx0000654
frvmx0000654
frvmx0000661
frvmx0000661
frvmx0000683
frvmx0000683
frvmx0000685
frvmx0000685
frvmx0000687
frvmx0000687
jmt201
mcds-test-301
mcds-test-301
mcds-test-303
mcds-test-303
rhel6918111243
rhel69611917
rhel7511130951
rhel7511130956
rhel7511161022
vlpchh08
vlpedu03
vlpedu03
vlpijl03
vlplin01
有人教我怎么做吗?

使用grep和-f(文件中的模式列表)和-v(反向匹配)


我对你的定义有点困惑
文件之间不同的行
因为显示的预期输出看起来像file1特有的
行。
如果是,请尝试:

comm -2 -3  <(sort file1) <(sort file2)
comm -3 --output-delimiter= <(sort file1) <(sort file2)
相反,如果要同时打印文件1特有的行 “文件2特有的行”,这将是
不同的行
,请尝试:

comm -2 -3  <(sort file1) <(sort file2)
comm -3 --output-delimiter= <(sort file1) <(sort file2)

简单而漂亮的回答。它与提供的示例配合得很好。但它可能有一个潜在的问题:如果文件1碰巧包含一行,例如
cb0030
,则由于
grep
的性质,它与文件2中的行
cb003
匹配,并且它们被视为
普通
行。最好将
-x
选项添加到
grep
以强制精确匹配。