のパスを置き換えたい
(setq myFile "/some/path")
ファイルで。私はsedでそれをやろうとしました:
find ./_build/html -type f -name '*.html' | while read myFile; do
MyFile=`readlink -f "$myFile"`
sed -i "s/setq myFile [)]*/setq myFile \"$MyFile\"/" sphinx_nowrap.el
# and then some actions on file
done
そしてperlで:
find ./_build/html -type f -name '*.html' | while read myFile; do
MyFile=`readlink -f "$myFile"`
perl -ne "s/setq myFile .+/setq myFile \"$MyFile\")/" sphinx_nowrap.el
# and then some actions on file
done
しかし、どちらもエラーになります。
編集:
これはperlエラーです:
Having no space between pattern and following word is deprecated at -e line 1.
Bareword found where operator expected at -e line 1, near "s/setq myFile .+/setq myFile "/home"
String found where operator expected at -e line 1, at end of line
(Missing semicolon on previous line?)
syntax error at -e line 1, near "s/setq myFile .+/setq myFile "/home"
Can't find string terminator '"' anywhere before EOF at -e line 1.
ここにsedエラーがあります:
sed: -e expression #1, char 34: unknown option to `s'
編集2:
したがって、解決策は区切り文字を変更することです。また、sed 式も変更する必要があります。
sed -i "s!setq myFile .*!setq myFile \"$MyFile\")!" sphinx_nowrap.el