join

使用两个文件中的共有字段连接每一个数据行


语法格式

join [options] file1 file2
join [--help] [--version]

命令简介

join命令利用两个文件中完全等同的一个字段连接每一对输入数据行,把连接后的数据行写到标准输出。默认的连接字段是两个文件的第一个字段,采用空白字符作为分隔符。

其中,file1file2是已排序的两个文本数据文件。如果其中的一个文件未指定,或指定的文件为“-”,则使用标准输入以代之。

命令选项

-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