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

如何读取CSV首列路径,通过awk批量提取对应文件指定值的Shell方案

调整后的完整脚本
#!/bin/bash
# 清空历史结果,避免重复追加
> result.csv

# 提取Sampleinput.csv第一列的所有路径,逐行处理
awk -F ',' '{print $1}' Sampleinput.csv | while read -r path
do
    # 提取路径对应的文件名,不需要额外调用echo
    var2="${path##*/}"
    # 调整awk实现,解决原语法问题同时优化执行逻辑
    var3=$(awk -v target_fname="$var2" '{
        for(i=1;i<NF;i++) {
            if ($i == target_fname) {
                print $(i+1)
                # 找到第一个匹配项直接退出,不需要额外head -1
                exit
            }
        }
    }' "$path")
    echo "done,$var3" >> result.csv
done
核心修改说明
  • 替换原手动输入逻辑:直接通过awk -F ','指定CSV分隔符为逗号,提取第一列的路径作为输入,无需手动输入记录数和路径
  • 修复原awk语法错误:原代码中if判断后多写了一个闭合大括号,会导致执行报错,本次一并修正
  • 优化变量传递方式:通过awk的-v参数将shell中的文件名变量传入awk内部,避免字符串拼接可能导致的特殊字符解析异常,兼容性更好
  • 兼容带空格的路径:给路径变量增加引号包裹,避免路径存在空格时脚本执行失败
执行效果

使用提供的测试用例执行后,result.csv输出和预期完全一致:

done,120
done,0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:45:01