2018-08-29浏览量:652

一文搞定Linux下文件对比

今天为大家介绍一下文件比对的四种方法:

comm,egrep,diff,vimdiff 

话不多说,我们首先创建两个文件:

1.comm

无参数:comm 1 2      #对比文件1、2

第一列表示仅在文件1中出现的行

第二列表示仅在文件2中出现的行

 第三列表示文件1、2中相同的行

注:comm 在进行文件比较时,文件要先进行排序。

⏩ 参数-1:comm -1 1 2 

#对比文件1、2,不显示文件1 出现的内容

另外comm 的其他参数分别表示:

⏩ -2:不显示文件2 中出现的内容

⏩ -3:不显示文件1,文件2 中相同的内容

我们还可以根据需要进行组合,例如:

⏩ 参数-12:comm -12 1 2

 #只显示文件1、2中相同的部分

2、egrep

egrep –f 1.txt 2.txt,与comm -12 功能一样。

显示文件1、2中相同的行。

egrep –f 1.txt –v 2.txt,与comm -13 功能一样,显示仅文件2中出现的行。

egrep –f 1.txt –v 2.txt,与comm -13 功能一样,显示仅文件2中出现的行。

3、diff

无参数:diff 1.txt 2.txt

分析结果前,我们要明白一些符号的含义:

⏩ a=add、c=change、d=delete;

⏩ “<”表示文件1中,“>”表示文件2中。

⏩ 3a4表示文件1的第三行后添加内容后与文件2的第4行相应,

⏩ 添加的内容即为cut,

⏩ > 表示存在文件2中。

⏩ 5c6,7表示文件1的第5行改成文件2的第6,7行后两文件内容一致,

⏩ <locate 表示文件1中的第5行的内容,

⏩ > touch > mkdir 表示文件2中6,7行的内容,用---分隔。

参数-c:diff 1.txt 2.txt –c

⏩ 参数c为context模式,结果更直观一点,

⏩ +表示文件1加上文件2中此行的内容cut后,内容匹配;

⏩ !表示文件1需要修改的行,修改后两文件相匹配。

注:diff的结果需记住符号所代表的含义,直观性不强。vimdiff就可以很好的解决这个问题。

4、vimdiff

vimdiff 1.txt 2.txt

整体命令简单,结果清晰明了,屏幕垂直分开。

左侧为文件1,右侧为文件2;

两文件共有行但内容不同是背景色为紫色,红色突出内容的不同;

若仅在一个文件中出现的行,背景色为蓝色,另一文件中对应的位置,背景色为绿色。

comm、egrep、diff和vimdiff各有优缺点,适用于不同的情况。希望通过本文的汇总,在文件对比时根据需求,大家能将其灵活的运用。

下一篇

版权所有 上海锐翌生物科技有限公司 沪ICP备16022951号