mac 比较两个文件

比较两个文件,输出两个文件都有的行,能够spa

1.使用comm命令code

以下例:blog

------------------->$ cat 1s1.txt
line 0
line 1
line 1
line 2
line 3
line 4


------------------->$ cat 1s2.txt
line 1
line 3
line 3
line 6


------------------->$ comm 1s1.txt 1s2.txt
line 0
                 line 1
line 1
line 2
                 line 3
        line 3
line 4
        line 6

 

comm命令会输出三列,第一列为第一个文件单有的行,第二列为第二个文件单有的行,第三列为公有的行。另若是有重复行,并不算一行来区分。ip

看comm的用法:io

------------------->$ comm -h
comm: illegal option -- h
usage: comm [-123i] file1 file2

能够选择输出那一列,好比输出第三列,须要使用-12,注意,不显示那一列,就把该列加到命令中去:class

------------------->$ comm -3 1s1.txt 1s2.txt
line 0
line 1
line 2
       line 3
line 4
       line 6


------------------->$ comm -12 1s1.txt 1s2.txt
line 1
line 3

 

若是想去重可使用命令:test

sort test.txt | uniq

 

2.使用grep命令file

------------------->$ grep -f 1s1.txt 1s2.txt
line 1
line 3
line 3


------------------->$ grep -f 1s2.txt 1s1.txt
line 1
line 1
line 3


------------------->$ grep -f 1s1.txt 1s2.txt && grep -f 1s2.txt 1s1.txt
line 1
line 3
line 3
line 1
line 1
line 3

 

3.uniq命令grep

先将两个文件分别去重,再组合到一块儿,那么两个文件都有的行 在组合文件中会有两行,经过uniq显示重复行能够打印公有部分。sort

命令参数:

-c或——count:在每列旁边显示该行重复出现的次数;
-d或--repeated:仅显示重复出现的行列;
-f<栏位>或--skip-fields=<栏位>:忽略比较指定的栏位;
-s<字符位置>或--skip-chars=<字符位置>:忽略比较指定的字符;
-u或——unique:仅显示出一次的行列;
-w<字符位置>或--check-chars=<字符位置>:指定要比较的字符。
相关文章
相关标签/搜索