join默认比较文件1和2的第一个域(默认比较$1是否相同进而连接在一起) join前需要确保两个文件sort
-a -v a1 显示第一个文件和第二个文件相连接而且显示第一个文件中有第二个文件没有的部分 v1 只显示未连接的第一个文件的部分
zzx@zzx120:~/zzx1/test/1/2$ cat a
100 Jason Smith
200 John Doe
300 Sanjay Gupta
400 Ashok Sharma
800 zzx
zzx@zzx120:~/zzx1/test/1/2$ cat b
100 $5,000
200 $500
300 $3,000
400 $1,250
500 $1,400
zzx@zzx120:~/zzx1/test/1/2$ join a b
100 Jason Smith $5,000
200 John Doe $500
300 Sanjay Gupta $3,000
400 Ashok Sharma $1,250
zzx@zzx120:~/zzx1/test/1/2$ join -a1 a b
100 Jason Smith $5,000
200 John Doe $500
300 Sanjay Gupta $3,000
400 Ashok Sharma $1,250
800 zzx
zzx@zzx120:~/zzx1/test/1/2$ join -v1 a b
800 zzx
zzx@zzx120:~/zzx1/test/1/2$ join -a2 a b
100 Jason Smith $5,000
200 John Doe $500
300 Sanjay Gupta $3,000
400 Ashok Sharma $1,250
500 $1,400
zzx@zzx120:~/zzx1/test/1/2$ join -v2 a b
500 $1,400
-o 指定显示的格式
zzx@zzx120:~/zzx1/test/1/2$ join -o 1.1 2.2 1.2 a b
100 $5,000 Jason
200 $500 John
300 $3,000 Sanjay
400 $1,250 Ashok
zzx@zzx120:~/zzx1/test/1/2$ join -o 2.2 1.2 a b
$5,000 Jason
$500 John
$3,000 Sanjay
$1,250 Ashok
zzx@zzx120:~/zzx1/test/1/2$ cat 1 #没有sort
jone:B
zzx:a
hxm:c
zzx@zzx120:~/zzx1/test/1/2$ cat 2
perfect:A:90
good:B:80
soso:C:60
-1 -2 分别指定两个文件用来比较的域 不用默认的第一个域来比较
zzx@zzx120:~/zzx1/test/1/2$ join -i -t: -1 2 -2 2 1 2
join: 1:2: is not sorted: zzx:a
B:jone:good:80
c:hxm:soso:60
zzx@zzx120:~/zzx1/test/1/2$ sort -k2 -t: 1 >3
zzx@zzx120:~/zzx1/test/1/2$ join -i -t: -1 2 -2 2 3 2
a:zzx:perfect:90
B:jone:good:80
c:hxm:soso:60
zzx@zzx120:~/zzx1/test/1/2$ join -i -t: -1 2 -2 2 -o 2.3 1.1 2.2 2.1 3 2
90:zzx:A:perfect
80:jone:B:good
60:hxm:C:soso
zzx@zzx120:~/zzx1/test/1/2$ join -i -t: -1 2 -2 2 -o 2.3 1.1 2.2 2.1 3 2|sort -t: -k2
60:hxm:C:soso
80:jone:B:good
90:zzx:A:perfect
zzx@zzx120:~/zzx1/test/1/2$ join -i -t: -1 2 -2 2 -o 2.3 1.1 2.2 2.1 3 2|sort -t: -k2 -r
90:zzx:A:perfect
80:jone:B:good
60:hxm:C:soso