比较两个文件,输出两个文件都有的行,能够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=<字符位置>:指定要比较的字符。