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

如何使用模板与输入文件在对应时间子目录下批量生成参数文件

解决方案

现有脚本已知问题修正

  • 变量赋值不能存在空格,times = $(...)需改为times=$(...)
  • find返回结果默认带./前缀且包含当前目录.,需要额外过滤处理
  • 原参数提取语句漏写管道符,且cut对多空白分隔的内容兼容性差,替换为awk更可靠

完整可运行脚本

#!/bin/bash
inputfile="input.txt"
template="myTemplate.txt"
# 提取所有时间目录,过滤当前目录,去除./前缀
times=$(find . -maxdepth 1 -type d | grep -v '^\.$' | sed 's/^\.\///')

for eachTime in $times
do
   # 提取input.txt中对应当前时间的行
   line=$(sed -n "/^$eachTime\s/p" "$inputfile")
   # 没有匹配到对应行则跳过
   [ -z "$line" ] && continue

   # 提取各参数
   T=$(echo "$line" | awk '{print $2}')
   P=$(echo "$line" | awk '{print $3}')
   U=$(echo "$line" | awk '{gsub(/\(/,"",$4); print $4}')
   V=$(echo "$line" | awk '{print $5}')
   W=$(echo "$line" | awk '{gsub(/\)/,"",$6); print $6}')

   # 替换模板占位符,生成对应目录下的output.txt
   sed -e "s/{%TIME%}/$eachTime/g" \
       -e "s/{%T%}/$T/g" \
       -e "s/{%P%}/$P/g" \
       -e "s/{%U%}/$U/g" \
       -e "s/{%V%}/$V/g" \
       -e "s/{%W%}/$W/g" \
       "$template" > "${eachTime}/output.txt"
done

核心逻辑说明

模板填充部分使用sed的字符串替换功能实现,通过多次替换把模板中的占位符依次替换为提取到的参数值,最后将替换后的内容重定向到对应时间目录下的output.txt即可。
如果追求更高效率,还可以把参数提取和模板生成逻辑合并到单条awk命令中实现,避免多次创建子进程,适合处理时间点数量非常大的场景。

内容的提问来源于stack exchange,提问作者Iyach tharwa nambarek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:36:05