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

如何批量处理目录下.dat文件:提取首行首个数值追加到第二行末尾

批量处理.dat文件解决方案

直接用shell循环配合awk即可完成需求,以下是适配不同环境的实现:

GNU awk 版本(Linux系统默认可用)

支持原地修改文件,无需生成临时中转文件:

for f in *.dat; do
  awk -i inplace '
  # 处理首行,提取第一个纯数字
  NR == 1 {
    for(i=1; i<=NF; i++) {
      if ($i ~ /^[0-9]+$/) {
        first_num = $i
        break
      }
    }
    print
  }
  # 处理第二行,追加提取到的数字
  NR == 2 {
    print $0, first_num
  }
  # 其余行原样输出
  NR > 2 {
    print
  }' "$f"
done

通用兼容版本(适配macOS/BSD等无awk inplace模块的环境)

通过临时文件中转完成原地修改:

for f in *.dat; do
  awk '
  NR == 1 {
    for(i=1; i<=NF; i++) {
      if ($i ~ /^[0-9]+$/) {
        first_num = $i
        break
      }
    }
    print
  }
  NR == 2 {
    print $0, first_num
  }
  NR > 2 {
    print
  }' "$f" > "$f.tmp" && mv "$f.tmp" "$f"
done

补充说明

  • 若需要提取的数值支持带小数点的浮点数,将正则匹配规则/^[0-9]+$/替换为/^[0-9]+\.?[0-9]*$/即可
  • 执行命令前建议先备份单份测试文件验证效果,确认符合预期后再批量执行
  • 命令默认遍历当前工作目录下所有.dat后缀的文件,无需提前指定文件名列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:27:03