使用Bash为CSV文件各列值前插入指定前缀字符串的方法咨询
Bash给CSV字段加前缀实现方法
以下方案均适配无嵌套逗号的标准CSV格式,可直接处理文件。
方案1:awk实现(推荐,适合大文件)
awk是处理结构化文本的最优选择,执行效率高,命令如下:
# 直接打印结果到终端 awk -F ',' 'BEGIN{OFS=","} {print "name="$1, "id="$2, "zip="$3, "city="$4, "country="$5}' input.csv # 结果写入新文件 awk -F ',' 'BEGIN{OFS=","} {print "name="$1, "id="$2, "zip="$3, "city="$4, "country="$5}' input.csv > output.csv
如果需要完全匹配你给出的示例,给第二字段追加固定后缀123,把上述命令中"id="$2修改为"id="$2"123"即可。
方案2:纯Bash实现(适合小文件)
如果不想依赖外部工具,可使用Bash内置的read命令逐行处理:
#!/bin/bash while IFS=',' read -r name id zip city country do echo "name=${name},id=${id},zip=${zip},city=${city},country=${country}" done < input.csv > output.csv
注意事项
- 如果你的CSV包含带引号的字段、字段内部嵌套逗号的场景,建议使用专用CSV处理工具
csvkit完成操作 - 字段数量变更时,直接对应调整前缀和字段位置即可
内容的提问来源于stack exchange,提问作者SuS
相关产品推荐
相关产品推荐

