paste命令按行号严格对齐合并文件,一行配一行,缺行处补空;默认tab分隔,可用-d指定逗号等分隔符;行数不一致时仍输出全部行。

用 paste 命令把两个按行对应的文本文件横向合并,核心就是“一行对一行,左右贴一起”。它不关心内容是否相同、字段是否匹配,只严格按行号对齐——第1行配第1行,第2行配第2行,以此类推。
基础用法:默认用 Tab 分隔
最简命令:
-
paste file1.txt file2.txt—— 直接输出合并结果到终端 -
paste file1.txt file2.txt > merged.txt—— 保存到新文件
例如:
file1.txt 内容:
apple<br>banana<br>orange
file2.txt 内容:
red<br>yellow<br>orange
执行
paste file1.txt file2.txt 后输出:apple<tab>red<br>banana<tab>yellow<br>orange<tab>orange</tab></tab></tab>
换分隔符:用 -d 指定更清晰的符号
Tab 在终端里看不见,容易误判;换成逗号、冒号等更直观:
-
paste -d ',' file1.txt file2.txt→ 输出:apple,red -
paste -d ':' file1.txt file2.txt→ 输出:apple:red -
paste -d ' | ' file1.txt file2.txt→ 输出:apple | red(注意空格也要引起来)
处理行数不一致的情况
如果一个文件行数少,paste 默认在缺位处补空(不是跳过,也不是报错):
- file1 有 5 行,file2 只有 3 行 → 合并后仍是 5 行,后两行右侧为空
- 想检查是否对齐?先用
wc -l file1.txt file2.txt看行数 - 若需严格对齐,可用
head -n $(wc -l 截取等长部分再 paste
合并多个文件或混入标准输入
paste 支持两个以上文件,也支持从管道读入:
-
paste a.txt b.txt c.txt→ 三列并排 -
cut -f1 data.csv | paste -d',' - b.txt→ 把管道输出和 b.txt 合并,-代表 stdin -
ls | paste -d' ' - - -→ 每 3 行合成 1 行,用空格分隔(适合格式化目录列表)











