join

警告
本文最后更新于 2023-10-22,文中内容可能已过时。

join

Linux join 命令用于将两个文件中,指定栏位内容相同的行连接起来。找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到标准输出设备。

有点像数据库中的联表查询。首先就要确定哪个字段等于哪个字段

1
join [-i][-a<1或2>][-e<字符串>][-o<格式>][-t<字符>][-v<1或2>][-1<栏位>][-2<栏位>][--help][--version][文件1][文件2]
  • -a<1或2>:除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。

  • -v<1或2>:跟-a相同,但是只显示文件中没有相同栏位的行。

  • -i--igore-case:比较栏位内容时,忽略大小写的差异。

  • -t<字符>:使用栏位的分隔字符。默认是tab,跟sort-tcut-d用法相同

  • -1<栏位>:连接[文件 1]指定的栏位。

  • -2<栏位>:连接[文件 2]指定的栏位。

简单实践:

准备文件jointest0.txt

jointest1.txt

join -t ':' -1 2 jointest0.txt  -2 2 jointest1.txt或者

join -t ':' -1 2  -2 2 jointest0.txt jointest1.txt,结果是:

结果列的顺序是:共同列 + 第一个文件除共同列以外的列 + 第二个文件除共同列以外的列

注意:共同列的数据顺序也要相同,比如文件一的共同列有三行,分别是:

共同列
1
2
3

文件二的共同列是:

共同列
3
2
1

此时,join会提示你文件二需要排序,同时只显示一部分共同行。

0%