位置:海鸟网 > IT > linux/Unix >

找出A文件和B文件中相同的行和不同的行

有文本文件A和B,均由文本行组成,文件A与B文件有相同的行,也有不同的行,首先整理,然后找到需要的结果。

0. 文件整理

# sort A | uniq > a; rm A; mv a A

# sort B | uniq > b; rm B; mv b B

解释:将A中按行排序,然后去掉相同行,并写入a,然后删掉A文件,将a重新命名为A

1. 找出文件A和文件B的公有行

# cat A B  | sort | uniq -d > C

解释:将AB文件合并,并重新排序,然后去掉只出现一次的行(只存在任一文件中),剩下的(出现两次的,即文件AB中均存在的)并写入文件C

2. 找出文件A中有,而文件B没有的行

# cat A C | sort | uniq -u > D

解释:将AC文件合并,并重新排序,然后取出只出现一次的行(只存在文件A中),并写入文件D

3. 找出文件B中有,而文件A没有的行

# cat B C | sort | uniq -u > E

解释:将AC文件合并,并重新排序,然后取出只出现一次的行(只存在文件A中),并写入文件E

4. 合并文件A和文件B,并删除重复的行

# cat A B  | sort | uniq  > F

解释:将AB文件合并,并重新排序,然后去掉重复的行,最后写入文件F