| 知乎专栏 |
join 命令就是一个根据关键字合并数据文件的命令(join lines of two files on a common field),类似于数据库中两张表关联查询.
内连接(inner join) 格式:join <FILE1> <FILE2> 左连接(left join, 左外连接, left outer join) 格式:join -a1 <FILE1> <FILE2> 右连接(right join, 右外连接,right outer join) 格式:join -a2 <FILE1> <FILE2> 全连接(full join, 全外连接, full outer join) 格式:join -a1 -a2 <FILE1> <FILE2> // 注意 使用 join 来合并两个文件的数据行时, 这两个文件必须要被正确排序. 1) 差集 [root@test23 ~]# cat a.txt | sort > file1; cat b.txt | sort > file2; join -v 1 file1 file2 1.1.1.1 3.3.3.3 [root@test23 ~]# cat a.txt | sort > file1; cat b.txt | sort > file2; join -v 2 file1 file2 4.4.4.4 a.b.c.d 2) 并集 [root@test23 ~]# cat a.txt | sort > file1; cat b.txt | sort > file2; join -a1 -a2 file1 file2 1.1.1.1 1.2.3.4 2.2.2.2 3.3.3.3 4.4.4.4 a.b.c.d 3) 交集 // 不指定任何参数的情况下使用join命令,相当于数据库中的内连接,(关键字,默认用第一列[使用空格作为分割符]作为关键字)不匹配的行不会输出. [root@test23 ~]# cat a.txt | sort > file1; cat b.txt | sort > file2; join file1 file2 1.2.3.4 2.2.2.2 join 其他用法 -t <CHAR> 指定分隔符,比如: -t ':' 使用冒号作为分隔符,默认的分隔符是空白. -o <FILENO.FIELDNO> ... 指定输出字段 其中FILENO=1表示第一个文件,FILENO=2表示第二个文件,FIELDNO表示字段序号,从1开始编号.默认会全部输出,但关键字列只输出一次.