sort,linux,shell命令

来源:互联网 发布:hdmi 网络中控 编辑:程序博客网 时间:2024/06/05 06:38
经常有这样的需求:两个文本文件要求取重复的行或只取不重复的,简单的情况下用sort和uniq来处理是非常方便的: 
利用现存两个文件,生成一个新的文件 


1. 取出两个文件的并集(重复的行只保留一份) 


2. 取出两个文件的交集(只留下同时存在于两个文件中的文件) 


3. 删除交集,留下其他的行 




1. cat file1 file2 | sort | uniq 
2. cat file1 file2 | sort | uniq -d 
3. cat file1 file2 | sort | uniq -u


例如:
[zzx@test55 ~]$ cat a
1
2
3
[zzx@test55 ~]$ cat b
23
2
3
4
5
6


排序:
[zzx@test55 ~]$ cat a b|sort
1
2
2
23
3
3
4
5
6


去重(并集):
[zzx@test55 ~]$ cat a b|sort|uniq
1
2
23
3
4
5
6


交集:
[zzx@test55 ~]$ cat a b|sort|uniq -d
2
3


去除交集后的并集
[zzx@test55 ~]$ cat a b|sort|uniq -u
1
23
4
5
6
 
差集可以用以下两种方法实现:
grep -F -f listb lista -v
sort B B A | uniq -u


Linux shell 排重 大全[待续]
1. sort tt.txt | awk '!a[$1]++'
2. sort -u tt.txt
3. sort tt.txt | uniq -d > tmp.txt
    sort tt.txt | uniq -u >> tmp.txt