join命令用于将两个文件中,指定栏位内容相同的行连接起来。其首先找出两个文件中指定栏位内容相同的行,并加以合并,再输出到标准输出设备。
-a FILENUM: 从FILENUM打印不成对的行,其中FILENUM是1或2,对应于FILE1或FILE2。-e EMPTY: 将缺少的输入字段替换为空。-i, --ignore-case: 比较字段时忽略大小写的差异。-j FIELD: 相当于-1 FIELD -2 FIELD。-o FORMAT: 构造输出线时遵守FORMAT。-t CHAR: 使用CHAR作为输入和输出字段分隔符。-v FILENUM: 类似于-a FILENUM,但不连接输出行。-1 FIELD: 加入文件1的这个FIELD。-2 FIELD: 加入文件2的这个FIELD。--check-order: 检查输入是否正确排序,即使所有输入行都可以配对。--nocheck-order: 不要检查输入是否正确排序。--header: 将每个文件的第一行视为字段标题,无需尝试将它们配对即可打印它们。--help: 显示帮助信息。--version: 显示版本信息。file1.txt与file2.txt文件内容如下:
使用join命令合并文件,为了合并两个文件,文件必须具有一些公共字段,此时两个文件中的公共字段均带有编号1、2...。
使用-a选项打印FILE1中已成对的行并链接以及不成对的行。
使用-v选项打印FILE1中不成对的行。
join会在第一个公共字段上组合文件行,该字段是默认值。但是这两个文件中的公共值不一定总是第一个列,所以join可以使用-1, -2指定公共值位置。-1和-2表示第一个和第二个文件,这些选项需要一个数字参数,该参数引用相应文件的连接字段。
对于上面的示例,我们直接使用-j参数也可以实现。