linux之找出两个文件里面相同的数据

1 问题

找出2个文件里面重复的数据(这个问题是csdn排名第一的大神stpeace的专栏在微信里面和我的交流,我当时一脸懵逼)

文件a.txt文件内容如下

cat a.txt
123
123
234
345
456

文件b.txt文件内容如下

cat b.txt
234
345
456
789
789

两个文件重复的数据如下

234
345
456

2 解决办法

1)sort和uniq命令搭配

首先,文件a.txt和b.txt文件本身都有重复数据,我么先自己去重,分别保存在c.txt和d.txt文件里面

 sort -u a.txt > c.txt

或者

 sort a.txt | uniq > c.txt
sort b.txt | uniq > d.txt

或者

 sort -u b.txt > d.txt

然后把c.txt和d.txt文件找出重复数据

sort c.txt d.txt | uniq -d
234
345
456

2)awk命令

awk '{print $1}' c.txt d.txt | sort | uniq -d
234
345
456

3)grep -f

grep -f a.txt b.txt
234
345
456
(0)

相关推荐