You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下合并行数不等的CSV文件时填充NULL至空单元格的方法

合并行数不等的CSV并填充NULL的Linux命令

假设两个目标CSV文件分别为a.csv(5行)和b.csv(4行),可以通过以下命令实现合并时用NULL填充短文件的缺失行:

步骤1:定义关键变量(也可整合为单条命令)

# 获取两个文件的行数
lines_a=$(wc -l < a.csv)
lines_b=$(wc -l < b.csv)
# 取两个文件的最大行数作为合并后的目标总行数
max_lines=$(( lines_a > lines_b ? lines_a : lines_b ))
# 获取b.csv的列数,用于生成对应数量的NULL字符串
cols_b=$(head -n1 b.csv | awk -F, '{print NF}')
# 生成与b.csv列数匹配的NULL字符串(列间用逗号分隔)
null_str=$(printf 'NULL,'%.0s $(seq 1 $cols_b) | sed 's/,$//')

步骤2:合并文件并补全缺失行

paste a.csv <(awk -v max="$max_lines" -v null="$null_str" 'NR <= max {print; next} {print null}' b.csv) > merged.csv

说明

  • paste命令负责按列合并两个文件的内容;
  • <(...)是Linux的进程替换特性,将awk处理后的b.csv内容作为临时输入源;
  • awk会遍历b.csv的每一行:当行数未达到max_lines时直接输出原行,否则输出预先生成的全NULL行;
  • 如果a.csv是行数较短的文件,只需互换命令中a.csv和b.csv的位置,并将变量调整为cols_a(获取a.csv的列数)即可。

内容的提问来源于stack exchange,提问作者Vyshnavi Vyshu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 03:55:12