Linux join命令用于将两个文件中,指定栏位内容相同的行连接起来。
找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到标准输出设备。
语法
join [-i][-a<1或2>][-e<字符串>][-o<格式>][-t<字符>][-v<1或2>][-1<栏位>][-2<栏位>][--help][--version][文件1][文件2]
参数:
- -a<1或2> 除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。
- -e<字符串> 若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串。
- -i或--igore-case 比较栏位内容时,忽略大小写的差异。
- -o<格式> 按照指定的格式来显示结果。
- -t<字符> 使用栏位的分隔字符。
- -v<1或2> 跟-a相同,但是只显示文件中没有相同栏位的行。
- -1<栏位> 连接[文件1]指定的栏位。
- -2<栏位> 连接[文件2]指定的栏位。
- --help 显示帮助。
- --version 显示版本信息。
实例
连接两个文件。
为了清楚地了解join命令,首先通过cat命令显示文件test1.txt和 test2.txt 的内容。
然后以默认的方式比较两个文件,将两个文件中指定字段的内容相同的行连接起来,在终端中输入命令:
join test1.txt test2.txt
查看两个文件中的文件内容:
$ cat test1.txt
abc 55
123456 66
runoops 77
aaaaa 88
bbbbb 99
ccccc 123
ddddd
eeeee
fffff
admin
$ cat test2.txt
runoops 11
aaaaa 12
bbbbb 13
ccdd 14
eeedd 14
some 16
使用join命令,将两个文件连接,结果如下:
$ join test1.txt test2.txt #连接test1.txt test2.txt中的内容
runoops 77 11
aaaaa 88 12
bbbbb 99 13
注意,文件1与文件2的位置对输出到标准输出的结果是有影响的。例如将命令中的两个文件互换,即输入如下命令:
join test2.txt test1.txt
最终在标准输出的输出结果将发生变化,如下所示:
runoops 11 77
aaaaa 12 88
bbbbb 13 99