在Linux
中有关join
的命令;
join [选项] 文件1 文件2
-a 文件编号:将文件编号指定的文件中没有匹配的行也输出。
-e 字符串:用字符串替代文件1或文件2中没有匹配的字段。
-i:在比较字段时忽略大小写。
-t 字符:指定字段的分隔符,默认为制表符。
-v 文件编号:只输出指定文件编号的文件中没有匹配的行。
-1 字段:指定文件1中用于比较的字段编号。
-2 字段:指定文件2中用于比较的字段编号。
cat 1.txt
1 a
4 b
3 c
5 d
cat 2.txt
1 y
9 f
5 m
// 第一个字段进行内连接,先排序
sort -k 1 1.txt > 3.txt
sort -k 1 2.txt > 4.txt
cat 3.txt
1 a
3 c
4 b
5 d
cat 4.txt
1 y
5 m
9 f
//内连接('-1 1 -2 1'表示匹配规则,相当于MySQL中的where,表示第一个文件(3.txt)的第一个字段和第二个文件(4.txt)的第一个字段进行匹配)
join -1 1 -2 1 3.txt 4.txt
1 a y
5 d m
cat 1.txt
1 a
4 b
3 c
5 d
cat 2.txt
1 y
9 f
5 m
// 第一个字段进行左连接,先排序
sort -k 1 1.txt > 3.txt
sort -k 1 2.txt > 4.txt
cat 3.txt
1 a
3 c
4 b
5 d
cat 4.txt
1 y
5 m
9 f
//左连接 (相当于MySQL中的left join)
join -1 1 -2 1 -a1 3.txt 4.txt
1 a y
3 c
4 b
5 d m
cat 1.txt
1 a
4 b
3 c
5 d
cat 2.txt
1 y
9 f
5 m
// 第一个字段进行左连接,先排序
sort -k 1 1.txt > 3.txt
sort -k 1 2.txt > 4.txt
cat 3.txt
1 a
3 c
4 b
5 d
cat 4.txt
1 y
5 m
9 f
//左连接 (相当于MySQL中的right join)
join -1 1 -2 1 -a2 3.txt 4.txt
1 a y
5 d m
9 f
cat 1.txt
1 a
4 b
3 c
5 d
cat 2.txt
1 y
9 f
5 m
// 第一个字段进行左连接,先排序
sort -k 1 1.txt > 3.txt
sort -k 1 2.txt > 4.txt
cat 3.txt
1 a
3 c
4 b
5 d
cat 4.txt
1 y
5 m
9 f
//内连接('-o 1.1 2.2'表示输出第一个文件第一个字段,第二个文件第二个字段)
join -1 1 -2 1 -o 1.1 2.2 3.txt 4.txt
1 y
5 m
cat 1.txt
1 a
4 b
3 c
5 d
cat 2.txt
1 y
9 f
5 m
// 第一个字段进行左连接,先排序
sort -k 1 1.txt > 3.txt
sort -k 1 2.txt > 4.txt
cat 3.txt
1 a
3 c
4 b
5 d
cat 4.txt
1 y
5 m
9 f
//未匹配到数据('-v 1'表示输出第1个文件中未匹配到数据)
join -v 1 -1 1 -2 1 3.txt 4.txt
3 c
4 b
//未匹配到数据('-v 2'表示输出第2个文件中未匹配到数据)
join -v 1 -1 1 -2 1 3.txt 4.txt
9 f
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。