使用两个文件中的共有字段连接每一个数据行
join [options] file1 file2
join [--help] [--version]
join命令利用两个文件中完全等同的一个字段连接每一对输入数据行,把连接后的数据行写到标准输出。默认的连接字段是两个文件的第一个字段,采用空白字符作为分隔符。
其中,file1与file2是已排序的两个文本数据文件。如果其中的一个文件未指定,或指定的文件为“-”,则使用标准输入以代之。
-a filenum 显示指定文件(号)中所有的(包括配对的与不配对的)数据行,其中1表示file1,2表示file2。
-e empty 使用指定的字符串替代缺失的输入字段。
-i, --ignore-case 比较字段时,忽略字母的大小写差异。
-j field 相当于指定了“-1 field -2 field”选项,表示使用两个文件中的同一字段执行连接操作。
-o format 按照指定的格式输出数据行。format是由0或若干m.n形式的文件号与字段组合而成的,中间加逗号或空格分隔符。其中0表示仅输出连接字段,m.n表示输出文件号与字段号指定的数据。
-t char 使用指定的字符作为输入和输出字段的分隔符。除非指定了“-t”选项,否则忽略字段前面的多余空白字符。
-v filenum 类似于“-a”选项,但仅显示指定文件(号)中不配对的数据行。
-1 field 使用第一个文件的指定字段进行连接操作(字段从1开始编号)。
-2 field 使用第二个文件的指定字段进行连接操作。
--check-order 检测输入文件是否已经正确排序,即使所有的输入数据行都配对。如果任何一个输入文件未排序,则输出一条错误信息。
--nocheck-order 禁止检测输入文件是否已正确排序。
1. 使用两个文件的第一个字段执行数据行连接操作。
$ cat name John 111-222-3333 Sam 444-555-6666 Tom 777-888-9999 $ cat name2 John San Diego Sam Los angles Tom San Francisco $ join name name2 John 111-222-3333 San Diego Sam 444-555-6666 Los angles Tom 777-888-9999 San Francisco $
2. 使用第一个文件的第二个字段、第二个文件的第一个字段执行数据行连接操作。
$ join -1 2 -2 1 file1 file2
索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z