约 4956 字

约 25 分钟

#Bash 的 join 命令

join [OPTION]... FILE1 FILE2

功能

将两个文件中的行按照公共字段连接。

类型

可执行文件(/usr/bin/join),属于 coreutils。

参数

  • OPTION 选项:
    • -1 FIELD - FILE1 根据 FIELD 字段进行匹配
    • -2 FIELD - FILE2 根据 FIELD 字段进行匹配
    • -a FILENUM - FILENUM 取 1 或 2,表示 FILE1 或 FILE2,额外打印对应文件中不可配对的行
    • -e STRING - 使用 STRING 填补缺失的空行
    • -i, --ignore-case - 比较字段时忽略大小写
    • -j FIELD - FILE1 和 FILE2 都根据 FIELD 字段进行匹配
    • -o FORMAT - 输出格式
    • -t CHAR - 使用 CHAR 作为输入和输出的分隔符
    • -v FILENUM - FILENUM 取 1 或 2,表示 FILE1 或 FILE2,仅打印对应文件中不可配对的行
    • --check-order - 检查输入是否正确排序
    • --nocheck-order - 不检查输入是否正确排序
    • --header - 将每个文件的第一行视作字段标题,直接打印,不进行匹配
    • -z, --zero-terminated - 以空字符(\0)作为行的结尾,而不是换行符(\n)
    • --help - 显示帮助
    • --version - 显示版本
  • FILE1 - 要连接的文件1
  • FILE2 - 要连接的文件2

#示例

$ cat 1.txt
1 Alice
2 Bob
3 Carol
$ cat 2.txt
1 90
2 85
4 70
$ join 1.txt 2.txt          # 默认按照第一列合并
1 Alice 90
2 Bob 85
$ join -a 1 1.txt 2.txt     # 保留文件 1 中未匹配的行
1 Alice 90
2 Bob 85
3 Carol
$ join -a 1 1.txt 2.txt     # 仅打印文件 1 中未匹配的行
3 Carol

#推荐阅读

#手册

更新: 2026/4/4

作者: PlanC

创建: 2025/11/17