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

如何提取grep结果指定部分并实现pdb文件坐标替换?

替换PDB文件特定行坐标的Shell脚本方案

如果你需要把目标PDB文件中含特定关键词行的坐标,替换到参考PDB文件对应行的坐标位置,下面是经过验证的完整解决方案:

需求回顾

  • 目标文件和参考文件都包含带特定关键词(比如示例中的OXT ORN)的行
  • 坐标固定在每行的第33-54列
  • 需要将坐标提取为变量,通过sed完成替换操作

完整可运行脚本

#!/bin/bash
FILE=$1

# 提取目标PDB文件中指定行的坐标(精准截取33-54列)
PDBcoords=$(grep -i "OXT ORN" "$FILE.pdb" | cut -c 33-54)
echo "Found PDB Coordinates for $FILE: $PDBcoords"

# 提取参考PDB文件中指定行的坐标
refcoords=$(grep -i "OXT ORN" pkaSH.pdb | cut -c 33-54)
echo "Found Reference Coordinates: $refcoords"

# 执行替换:用目标坐标替换参考文件中的对应坐标
sed -i "s/$refcoords/$PDBcoords/" pkaSH.pdb

echo "Coordinate replacement completed successfully for $FILE"

关键细节解释

  • 坐标提取逻辑:
    • grep -i "OXT ORN":不区分大小写匹配目标行,确保关键词大小写变化时也能命中
    • cut -c 33-54:按字符位置精准截取坐标区域,完美匹配PDB文件的格式规范
    • 直接用命令替换$()赋值变量,自动保留坐标中的空格,无需额外处理
  • sed替换注意事项:
    • 必须用双引号包裹替换表达式,这样Shell才会解析变量$refcoords和$PDBcoords的实际值(单引号会把变量名当成字面量)
    • -i参数让sed直接修改文件内容(如果是macOS系统,需要改为sed -i '',避免生成冗余的备份文件)
  • 使用方式:
    运行脚本时传入目标PDB文件名(不带.pdb后缀)即可:
    ./replace_coords.sh my_target_pdb
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:09:43