私のグラントファイルには次のコマンドがあります。
"sed -i index 's/API_CONTEXT_URI/http:\\/\\/localhost:5557/g' www/index.js"
これは私が書いたファイルではありません。このファイルはメンテナンスプロジェクトとして私に来なければなりません。だから私はその行を正しく理解していません。 API_CONTEXT_URI文字列をAPI_CONTEXT_URIで指定されたURLに置き換える必要がありますindex.js
。エラーは次のとおりです。
can't read s/API_CONTEXT_URI/http://localhost:5557/g: No such file or directory
私の説明によるとsed
見つかりませんindex.js
。しかし、フォルダindex.js
に1つありますwww
。脱出の\\/
ために変更しようとしましたが、まだ機能しません。どこで見ることができるかを教えてくれる人はいますか?私はコマンドのandについて懐疑的です。\
/
-i
index
答え1
-e
s/foo/bar/ 以前 (*) がありません。混乱しています。あなた(スクリプト)が編集中です
index
かwww/index.js
?index
作成用のテンプレートファイル(API_CONTEXT_URLを含む)の場合はwww/index.js
お勧めします。sed -e s,API_CONTEXT_URL,http://localhost:5557,g index > www/index.js
代わりに、チャットの間に区切り文字を使用できます。私はあまりにも多くのエスケープを避けるためにカンマ(、)を使用しました。
編集したいファイルが
www/index.js
以下を使用する場合sed -i -e s,API_CONTEXT_URL,http://localhost:5557,g www/index.js
どこ
-i
Flag は sed にファイルをその場で編集するよう指示します。
編集:User112638726とdon_crisstiのおかげで、エラーは非常に明白です。
sed -i index 's/API_CONTEXT_URI/http:\\/\\/localhost:5557/g' www/index.js
sed によって次のように解釈されます。
-i
その場で編集して、index
つまりi
(挿入)ndex
、- 2つのファイルで:
's/API_CONTEXT_URI/http:\\/\\/localhost:5557/g'
そしてwww/index.js
。
私はという名前のファイルがないとします。つまり、現在のディレクトリのディレクトリにあるファイルですs/API_CONTEXT_URI/http:\\/\\/localhost:5557/g
。g
http:\\/\\/localhost:5557
API_CONTEXT_URI
s
私はいつも使用します-e command
。 2つを入れる必要がある場合に備えて、sedが(現在の)単一のコマンドを処理できることがわかりました。過去にもそうだったのかよくわかりません。