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

使用sed命令修改GDML文件中目录路径失败的问题排查

问题分析与解决

你的sed命令操作有误,导致文件路径未改变,具体原因和修正方案如下:

原命令的问题

你执行的sed -i 's@jk@kj@' 60000222.gdml仅替换了字符串中的jk为kj,但待替换的完整内容是jk=":http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd",原命令并未处理后面的远程路径部分,因此文件里的路径自然不会更新为本地路径。

正确的sed命令

需要匹配完整的目标字符串进行替换,执行以下命令:

sed -i 's@jk=":http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd"@kj="/home/shirin/TPS/Geant4/geant4.10.02.p02/source/persistency/gdml/schema/gdml.xsd"@' 60000222.gdml

如果需要批量处理所有GDML文件,可将文件名替换为*.gdml:

sed -i 's@jk=":http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd"@kj="/home/shirin/TPS/Geant4/geant4.10.02.p02/source/persistency/gdml/schema/gdml.xsd"@' *.gdml

额外检查点

  1. 确认目标字符串存在:先用grep命令验证文件中确实包含待替换的完整字符串:
    grep 'jk=":http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd"' 60000222.gdml
    
    如果没有输出,说明文件中不存在该字符串,需要检查内容是否有拼写、大小写或空格差异。
  2. 适配不同系统的sed:若在macOS上执行,BSD版本的sed要求-i参数后加空后缀,命令需调整为:
    sed -i '' 's@jk=":http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd"@kj="/home/shirin/TPS/Geant4/geant4.10.02.p02/source/persistency/gdml/schema/gdml.xsd"@' 60000222.gdml
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 15:00:53