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

如何将alldatalist.txt的外层路径与引用文件内的文件名拼接

简洁实现方案

方案1:单awk命令实现(最推荐,性能好)

直接一行命令即可完成需求,自动处理所有路径拼接:

awk '{
    # 提取当前datalist.txt所在的目录路径
    dir = $0
    gsub(/datalist.txt$/, "", dir)
    # 逐行读取当前datalist.txt的内容
    while((getline line < $0) > 0) {
        # 过滤空行,拼接后输出
        if (line != "") {
            print dir line
        }
    }
    # 关闭打开的文件避免句柄泄漏
    close($0)
}' alldatalist.txt

逻辑说明:

  • 逐行读取alldatalist.txt的路径,把路径末尾的datalist.txt去掉,得到上级目录路径
  • 读取对应datalist.txt里的每一个文件名,和目录路径直接拼接后输出
  • 自动跳过子文件里的空行,匹配示例场景

方案2:xargs结合shell参数替换实现

如果你更习惯用xargs逻辑,可以用以下命令:

xargs -I {} sh -c 'sed "s#^#${1%datalist.txt}#" "$1"' _ {} < alldatalist.txt

逻辑说明:

  • 用-I {}把alldatalist.txt里的每一行路径作为参数传入子shell
  • 用shell参数扩展${1%datalist.txt}去掉路径末尾的datalist.txt得到目录
  • 用sed给子文件每一行开头加上目录前缀后输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:24:03