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

编写BASH/ZSH脚本:批量将分子坐标写入模板生成ORCA计算输入文件

批量生成分子计算输入文件的脚本修复方案

需求回顾

  • 处理命名格式为 <prefix>_DH###.xyz 的分子坐标文件
  • 跳过每个xyz文件的前两行(原子数、注释行),提取笛卡尔坐标
  • 将模板文件中的 $coords 占位符替换为提取的坐标
  • 生成命名为 <prefix>_D###.inp 的输入文件,并存入对应编号的 D### 目录

完整修复脚本

#!/bin/zsh

template="$2"

# 检查模板文件是否存在
if [[ ! -f "$template" ]]; then
    echo "错误:模板文件 $template 不存在"
    exit 1
fi

# 遍历所有符合命名规则的xyz文件
for xyz_file in *_DH[0-9][0-9][0-9].xyz; do
    # 跳过glob匹配失败时的空结果
    [[ -f "$xyz_file" ]] || continue

    # 从文件名提取前缀和三位编号
    prefix="${xyz_file%_DH*.xyz}"
    num="${xyz_file#*_DH}"
    num="${num%.xyz}"

    # 定义输出路径
    output_dir="D${num}"
    output_file="${output_dir}/${prefix}_D${num}.inp"

    # 提取坐标(跳过前两行)
    coords=$(sed '1,2d' "$xyz_file")

    # 替换模板占位符并生成输入文件
    sed "s/\$coords/$coords/g" "$template" > "$output_file"

    echo "已生成:$output_file"
done

关键修复说明

  • 不修改原文件:通过 sed '1,2d' 直接提取坐标到变量,避免破坏原始xyz文件
  • 自动解析文件名:用参数扩展从xyz文件名中拆分前缀和编号,无需手动计数或指定索引
  • 精准替换占位符:利用 sed 字符串替换功能,将模板中的 $coords 直接替换为多行坐标
  • 容错机制:添加模板文件存在性检查、glob匹配失败跳过逻辑,避免脚本崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:50:27