1. 命令简介join 命令用于将两个文件中指定栏位字段内容相同的行连接合并起来。它基于两个输入文件中指定的关键字段默认为第一个字段进行匹配将匹配成功的行按指定格式合并后输出到标准输出。该命令常用于处理具有关联关系的结构化文本数据如 CSV、TSV 或空格分隔的文件是 Linux/Unix 系统中进行数据关联操作的常用工具。2. 语法格式plaintextjoin [选项]... 文件1 文件2基本要求输入的两个文件必须已按照连接字段关键字段排序通常使用 sort 命令预处理。默认情况下join 使用两个文件的第一个字段作为连接键并以空白字符空格、制表符作为字段分隔符。如果 文件 1 或 文件 2 是 -则表示从标准输入读取。3. 常用选项及说明表格选项说明-a FILENUM除了显示正常连接的行外还输出指定文件中未能匹配的行。FILENUM 为 1 或 2分别对应 文件 1 或 文件 2。-e STRING当某个文件在匹配行中缺少输出字段时用指定的 STRING 填充空字段。-i 或 --ignore-case在比较连接字段时忽略大小写差异。-j FIELD等价于 -1 FIELD -2 FIELD指定两个文件共同使用的连接字段编号。-o FORMAT自定义输出格式。FORMAT 格式为 FILENUM.FIELD例如 1.2 表示输出第一个文件的第 2 个字段2.3 表示输出第二个文件的第 3 个字段。多个字段用逗号或空格分隔。-t CHAR指定输入和输出字段分隔符为单个字符 CHAR例如 -t , 用于 CSV 文件。默认是空白字符。-v FILENUM与 -a 类似但只输出指定文件中未能匹配的行不输出成功连接的行。-1 FIELD指定 文件 1 中用于连接的字段编号从 1 开始计数。-2 FIELD指定 文件 2 中用于连接的字段编号从 1 开始计数。--help显示帮助信息并退出。--version显示版本信息并退出。4. 示例用法假设我们有两个已排序的文件employees.txt (员工 ID 和姓名)plaintext101 Alice 102 Bob 103 Charlie 105 Evedepartments.txt (员工 ID 和部门)plaintext101 Engineering 102 Sales 104 Marketing 105 HR示例 1基本内连接默认输出两个文件中员工 ID 匹配的行。命令bash运行join employees.txt departments.txt输出plaintext101 Alice Engineering 102 Bob Sales 105 Eve HR注意ID 为 103 和 104 的员工因在另一文件中无匹配项未被输出示例 2左外连接 (-a 1)输出所有 employees.txt 中的行即使其在 departments.txt 中没有匹配项。命令bash运行join -a 1 employees.txt departments.txt输出plaintext101 Alice Engineering 102 Bob Sales 103 Charlie 105 Eve HR示例 3仅显示未匹配的行 (-v)仅显示在 employees.txt 中存在但在 departments.txt 中无匹配的行。命令bash运行join -v 1 employees.txt departments.txt输出plaintext103 Charlie示例 4自定义连接字段和分隔符假设文件以逗号分隔且需用 文件 1 的第 2 字段连接 文件 2 的第 1 字段。命令bash运行join -t , -1 2 -2 1 file1.csv file2.csv示例 5自定义输出格式 (-o)仅输出员工姓名文件 1 第 2 字段和部门文件 2 第 2 字段。命令bash运行join -o 1.2,2.2 employees.txt departments.txt输出plaintextAlice Engineering Bob Sales Eve HR示例 6处理缺失字段 (-e)当某个匹配行在第二个文件中字段数不足时用 “N/A” 填充。命令bash运行join -e ‘N/A‘ -a 1 employees.txt departments_short.txt5. 注意事项排序要求这是最重要的一点。join 命令要求两个输入文件必须已按照连接键严格排序通常为字典序。如果文件未排序结果将不可预测或报错。务必先使用 sort 命令对连接字段进行排序。plaintextjoin (sort file1) (sort file2)字段分隔符默认字段分隔符是空白字符空格 / 制表符会忽略行首的空白并将连续的空白视为一个分隔符。若需精确控制应使用 -t 选项指定单一字符作为分隔符。连接键唯一性如果某个文件中有多行的连接键值相同join 会生成所有可能的配对组合这可能导致输出行数激增。文件格式两个文件的字段分隔符应保持一致。如果使用 -t 指定了分隔符它将同时应用于输入和输出。字段编号字段编号从 1 开始而不是 0。性能对于非常大的文件join 可能比某些数据库操作或高级编程语言处理慢但对于系统脚本和日常文本处理任务它非常高效便捷。获取更多Linux学习资料请关注“阿成学长工具包”对话框中输入2647获取
Linux join 命令超全详解:文本文件关联合并神器,数据处理必备
1. 命令简介join 命令用于将两个文件中指定栏位字段内容相同的行连接合并起来。它基于两个输入文件中指定的关键字段默认为第一个字段进行匹配将匹配成功的行按指定格式合并后输出到标准输出。该命令常用于处理具有关联关系的结构化文本数据如 CSV、TSV 或空格分隔的文件是 Linux/Unix 系统中进行数据关联操作的常用工具。2. 语法格式plaintextjoin [选项]... 文件1 文件2基本要求输入的两个文件必须已按照连接字段关键字段排序通常使用 sort 命令预处理。默认情况下join 使用两个文件的第一个字段作为连接键并以空白字符空格、制表符作为字段分隔符。如果 文件 1 或 文件 2 是 -则表示从标准输入读取。3. 常用选项及说明表格选项说明-a FILENUM除了显示正常连接的行外还输出指定文件中未能匹配的行。FILENUM 为 1 或 2分别对应 文件 1 或 文件 2。-e STRING当某个文件在匹配行中缺少输出字段时用指定的 STRING 填充空字段。-i 或 --ignore-case在比较连接字段时忽略大小写差异。-j FIELD等价于 -1 FIELD -2 FIELD指定两个文件共同使用的连接字段编号。-o FORMAT自定义输出格式。FORMAT 格式为 FILENUM.FIELD例如 1.2 表示输出第一个文件的第 2 个字段2.3 表示输出第二个文件的第 3 个字段。多个字段用逗号或空格分隔。-t CHAR指定输入和输出字段分隔符为单个字符 CHAR例如 -t , 用于 CSV 文件。默认是空白字符。-v FILENUM与 -a 类似但只输出指定文件中未能匹配的行不输出成功连接的行。-1 FIELD指定 文件 1 中用于连接的字段编号从 1 开始计数。-2 FIELD指定 文件 2 中用于连接的字段编号从 1 开始计数。--help显示帮助信息并退出。--version显示版本信息并退出。4. 示例用法假设我们有两个已排序的文件employees.txt (员工 ID 和姓名)plaintext101 Alice 102 Bob 103 Charlie 105 Evedepartments.txt (员工 ID 和部门)plaintext101 Engineering 102 Sales 104 Marketing 105 HR示例 1基本内连接默认输出两个文件中员工 ID 匹配的行。命令bash运行join employees.txt departments.txt输出plaintext101 Alice Engineering 102 Bob Sales 105 Eve HR注意ID 为 103 和 104 的员工因在另一文件中无匹配项未被输出示例 2左外连接 (-a 1)输出所有 employees.txt 中的行即使其在 departments.txt 中没有匹配项。命令bash运行join -a 1 employees.txt departments.txt输出plaintext101 Alice Engineering 102 Bob Sales 103 Charlie 105 Eve HR示例 3仅显示未匹配的行 (-v)仅显示在 employees.txt 中存在但在 departments.txt 中无匹配的行。命令bash运行join -v 1 employees.txt departments.txt输出plaintext103 Charlie示例 4自定义连接字段和分隔符假设文件以逗号分隔且需用 文件 1 的第 2 字段连接 文件 2 的第 1 字段。命令bash运行join -t , -1 2 -2 1 file1.csv file2.csv示例 5自定义输出格式 (-o)仅输出员工姓名文件 1 第 2 字段和部门文件 2 第 2 字段。命令bash运行join -o 1.2,2.2 employees.txt departments.txt输出plaintextAlice Engineering Bob Sales Eve HR示例 6处理缺失字段 (-e)当某个匹配行在第二个文件中字段数不足时用 “N/A” 填充。命令bash运行join -e ‘N/A‘ -a 1 employees.txt departments_short.txt5. 注意事项排序要求这是最重要的一点。join 命令要求两个输入文件必须已按照连接键严格排序通常为字典序。如果文件未排序结果将不可预测或报错。务必先使用 sort 命令对连接字段进行排序。plaintextjoin (sort file1) (sort file2)字段分隔符默认字段分隔符是空白字符空格 / 制表符会忽略行首的空白并将连续的空白视为一个分隔符。若需精确控制应使用 -t 选项指定单一字符作为分隔符。连接键唯一性如果某个文件中有多行的连接键值相同join 会生成所有可能的配对组合这可能导致输出行数激增。文件格式两个文件的字段分隔符应保持一致。如果使用 -t 指定了分隔符它将同时应用于输入和输出。字段编号字段编号从 1 开始而不是 0。性能对于非常大的文件join 可能比某些数据库操作或高级编程语言处理慢但对于系统脚本和日常文本处理任务它非常高效便捷。获取更多Linux学习资料请关注“阿成学长工具包”对话框中输入2647获取