所以,我四处寻找这个问题的答案,确实我找到了一些,但似乎没有一个工作......
我有一个文件夹,里面装满了需要修改的 bash 脚本。具体来说,我需要更换线路
INPUT=/data/scratch02/mpgussert/HAWC-30/${RUN}_reco
和
INPUT=/data/hawc01/hawcroot/data/hawc/reconstructed/quesadilla/${RUN}
我试过这个
perl -w -i -p -e "s'INPUT=/data/scratch02/mpgussert/HAWC-30/${RUN}_reco'INPUT=/data/hawc01/hawcroot/data/hawc/reconstructed/quesadilla/${RUN}'g" *.sh
它执行没有错误,但没有找到并替换所需的文本。据我了解,使用 ' 来区分正则表达式应该在没有特殊字符替换的情况下进行搜索。那是对的吗?如果是这样,有什么想法会失败吗?
我也试过
perl -w -i -p -e "s/INPUT=\/data\/scratch02\/mpgussert\/HAWC-30\/\$\{RUN\}_reco/INPUT=\/data\/hawc01\/hawcroot\/data\/hawc\/reconstructed\/quesadilla\/\$\{RUN\}/g" *.sh
反斜杠应该忽略特殊字符替换,但这会返回以下错误。
Backslash found where operator expected at -e line 1, near "RUN\"
syntax error at -e line 1, near "RUN\"
Execution of -e aborted due to compilation errors.
所以它正在搜索 RUN\,这不是我想要的......有什么想法吗?我将不胜感激您能提供的任何帮助。
谢谢!