それで、私はこれに対する答えを探しました、そして実際にいくつか見つけましたが、どれもうまくいかないようです...
変更が必要な 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\ を検索していますが、これは私が望んでいるものではありません... 何か考えはありますか? ご協力いただければ幸いです。
ありがとう!