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

如何在Bash中将CSV文件列内容传递给命令参数?

处理CSV生成多参数命令调用的方法

方法一:用awk和bash直接拼接命令

适合快速在终端执行,分两种场景:

场景1:文件名无特殊字符(无空格、引号)

# 提取CSV两列内容,转为空格分隔的字符串
txt_files=$(awk -F ',' '{print $1}' your_file.csv | tr '\n' ' ')
tsv_files=$(awk -F ',' '{print $2}' your_file.csv | tr '\n' ' ')

# 调用目标脚本
myscript.py --txt $txt_files --tsv $tsv_files

场景2:文件名含空格/特殊字符(bash 4.0+)

用数组存储文件名,避免字符串拼接出错:

# 把两列内容分别读入数组
readarray -t txt_arr < <(awk -F ',' '{print $1}' your_file.csv)
readarray -t tsv_arr < <(awk -F ',' '{print $2}' your_file.csv)

# 调用脚本,数组展开保留文件名格式
myscript.py --txt "${txt_arr[@]}" --tsv "${tsv_arr[@]}"

方法二:用Python脚本生成并执行命令

适合需要处理复杂CSV格式(比如文件名含逗号)的场景,逻辑更稳妥:

import csv
import subprocess

txt_files = []
tsv_files = []

# 读取CSV文件,提取两列
with open('your_file.csv', 'r', newline='') as f:
    reader = csv.reader(f)
    for row in reader:
        # 跳过空行
        if not row:
            continue
        txt_files.append(row[0])
        tsv_files.append(row[1])

# 构造命令并执行
cmd = ['myscript.py', '--txt'] + txt_files + ['--tsv'] + tsv_files
subprocess.run(cmd, check=True)

注意事项

  • 替换your_file.csv为你的实际CSV文件名,myscript.py替换为目标脚本名
  • 如果CSV存在空行,awk命令可加NF>0过滤:awk -F ',' 'NF>0 {print $1}' your_file.csv

内容的提问来源于stack exchange,提问作者Gabriel G.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 15:02:42