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

如何使用bash批量替换experiments.txt中的旧csv文件路径

执行前提

以下命令均在src/目录下执行。

最终实现方案

可以直接用awk一行搞定,逻辑和你写的Python脚本完全对齐,执行效率更高:

# 生成新文件experiments-2.txt,不修改原文件,兼容性最好
awk '
# 预读data目录下所有csv文件,构建「模型后缀→新路径」的映射
BEGIN {
    while (("ls ../data/*.csv" | getline csv_path) > 0) {
        split(csv_path, arr, "-")
        suffix = arr[length(arr)]
        file_map[suffix] = csv_path
        # 把路径分隔符从/替换为\,适配你需要的输出格式
        gsub("/", "\\", file_map[suffix])
    }
}
# 逐行处理experiments.txt的内容
{
    # 提取当前行第一个路径的模型后缀
    split($1, arr, "-")
    suffix = arr[length(arr)]
    # 替换第一个字段为匹配到的新路径
    $1 = file_map[suffix]
    # 输出修改后的整行内容
    print $0
}
' experiments.txt > experiments-2.txt

如果你需要直接修改原experiments.txt,使用GNU awk(大部分Linux发行版默认预装)可以加-i inplace参数实现:

# 直接修改原文件的版本,仅GNU awk 4.1+支持
awk -i inplace '
BEGIN {
    while (("ls ../data/*.csv" | getline csv_path) > 0) {
        split(csv_path, arr, "-")
        suffix = arr[length(arr)]
        file_map[suffix] = csv_path
        gsub("/", "\\", file_map[suffix])
    }
}
{
    split($1, arr, "-")
    $1 = file_map[arr[length(arr)]]
    print
}
' experiments.txt

注意事项

如果是macOS环境,系统默认自带的是BSD awk,不支持-i inplace参数,使用第一种生成新文件的方案即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:15:07