核心内容摘要
fish-speech-1.5体验报告:300万小时训练的语音合成效果有多惊艳?
概述Linux 中的join命令这个命令的核心作用是按“关键字段”将多个文件的行关联合并类似数据库的 JOIN 操作区别于paste仅按行号无脑拼接join会匹配两个文件中关键字段相同的行再横向合并是处理结构化文本如 CSV、日志、数据清单的核心工具。
资料合集https://pan.quark.cn/s/6fe3007c3e
https://pan.quark.cn/s/561de99256a
https://pan.quark.cn/s/985f55b13d
https://pan.quark.cn/s/d0fb20abd19a
核心前提必看使用join的硬性要求待合并的文件必须按关键字段排序否则无法正确匹配默认以第一列作为关键字段可通过选项指定其他列仅支持两个文件的合并多文件需多次拼接字段默认用空格/制表符分隔可自定义分隔符。
基本语法join[选项]文件1 文件2无选项时默认按第一列关键字合并输出“关键字 文件1剩余列 文件2剩余列”支持-作为文件参数代表读取标准输入。
常用选项按功能分类join的选项围绕“关键字段、分隔符、匹配规则”设计覆盖数据库 JOIN 的核心逻辑选项分类选项作用实用场景关键字段配置-1 N指定文件1的第N列作为关键字文件1关键字不在第一列时如第3列是用户ID-2 N指定文件2的第N列作为关键字文件2关键字不在第一列时分隔符配置-t 字符指定字段分隔符默认空格/制表符处理CSV文件分隔符为逗号、竖线分隔的文本-o 格式自定义输出列如
1
2代表文件1第1列文件2第2列仅输出需要的列避免冗余匹配规则核心-a 数字显示指定文件的“不匹配行”-a1文件1所有行-a2文件2所有行实现 LEFT/RIGHT JOIN 效果-v 数字仅显示指定文件的“不匹配行”-v1仅文件1不匹配行找两个文件的差异行-e 字符串用指定字符串填充空列配合-a使用统一空值显示如用“N/A”替代空
基础示例先理解核心逻辑先准备两个已排序的结构化文件模拟用户信息和订单信息# file
txt用户信息ID 姓名 年龄关键字ID 1 张三 25 2 李四 30 3 王五 28 4 赵六 35 # file
txt订单信息ID 订单号 金额关键字ID 1 OD001 100 2 OD002 200 3 OD003 150 5 OD005 300场景1默认合并INNER JOIN仅输出关键字ID在两个文件中都存在的行joinfile
txt file
txt输出结果关键字file1剩余列file2剩余列1 张三 25 OD001 100 2 李四 30 OD002 200 3 王五 28 OD003 150赵六ID
ID5 因仅在单个文件存在被过滤这就是数据库的 INNER JOIN。
场景2LEFT JOIN显示文件1所有行用-a1保留文件1的所有行无匹配时补空join-a1 file
txt file
txt输出结果1 张三 25 OD001 100 2 李四 30 OD002 200 3 王五 28 OD003 150 4 赵六 35赵六ID4无订单订单列为空ID5 仍不显示仅保留文件1所有行。
场景3FULL JOIN显示所有行组合-a1 -a2实现全连接配合-e N/A填充空值join-a1 -a2 -eN/Afile