- 工信部备案号 滇ICP备05000110号-1
- 滇公安备案 滇53010302000111
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
join命令一般不常用,不过每个命令肯定都有它的意义,了解了一下发现也挺有意思,也许哪天就真能用到。
join适合将一些结构化的文本数据进行整合。前提他们都是多列数据,其中多个文件中有一个意义相同且数据不重复的列,比如一个文件存放着学生的学号和姓名,另一个文件存放着学号和高考分数,这时将这两个文本文件合在一起就可以使用join方法。示例如下:
[root@123 ~]# cat a.txt #列出a.txt文件内容
1 春天
2 夏天
3 秋天
4 冬天
5 冬去春来
[root@123 ~]# cat b.txt #列出b.txt文件内容
0 春来天
1 暖
2 热
3 凉
4 冷
[root@123 ~]# join a.txt b.txt #使用join相连,就像mysql的连接一样,默认是内连接,
1 春天 暖
2 夏天 热
3 秋天 凉
4 冬天 冷
[root@123 ~]# join -o 1.1 1.2 1.3 a.txt b.txt #可以指定输出哪些列并指定排序,1/2文件代表文件1/2的第几列。
1 春天
2 夏天
3 秋天
4 冬天
[root@123 ~]# join -o 1.1 1.2 2.2 a.txt b.txt
1 春天 暖
2 夏天 热
3 秋天 凉
4 冬天 冷
[root@123 ~]# join -o 1.1 2.2 1.2 a.txt b.txt
1 暖 春天
2 热 夏天
3 凉 秋天
4 冷 冬天
[root@123 ~]# join -a1 a.txt b.txt #就像mysql的左连接,右连接一样。
1 春天 暖
2 夏天 热
3 秋天 凉
4 冬天 冷
5 冬去春来
[root@123 ~]# join -a2 a.txt b.txt
0 春来天
1 春天 暖
2 夏天 热
3 秋天 凉
4 冬天 冷
[root@123 ~]# join -a1 -a2 a.txt b.txt
0 春来天
1 春天 暖
2 夏天 热
3 秋天 凉
4 冬天 冷
5 冬去春来
[root@123 ~]# cat a.txt b.txt #把文件内容换了一下。原来是制表分开,改成=号
1=春天
2=夏天
3=秋天
4=冬天
1=暖
2=热
3=凉
4=冷
[root@123 ~]# join a.txt b.txt #直接连接时报错,找不到有序数据
join: file 1 is not in sorted order
[root@123 ~]# join -t '=' a.txt b.txt #指定以=分开才可以结合在一起。
1=春天=暖
2=夏天=热
3=秋天=凉
4=冬天=冷
[root@123 ~]# cat a.txt #修改文件内容,使得b.txt中的ID数字不在第一列
1=春天
2=夏天
3=秋天
4=冬天
[root@123 ~]# cat b.txt
暖=1
热=2
凉=3
冷=4
[root@123 ~]# join -1 1 -2 2 -t '=' a.txt b.txt #连接时指定每个文件使用哪列判断相等
1=春天=暖
2=夏天=热
3=秋天=凉
4=冬天=冷
[root@123 ~]# join -1 2 -2 1 -t '=' b.txt a.txt
1=暖=春天
2=热=夏天
3=凉=秋天
4=冷=冬天
[root@123 ~]# join -1 2 -2 1 -o 1.2 2.2 1.1 -t '=' b.txt a.txt #指定连接哪些列和顺序
1=春天=暖
2=夏天=热
3=秋天=凉
4=冬天=冷
[root@123 ~]#
售前咨询
售后咨询
备案咨询
二维码
TOP