sedエラーの原因は何ですか?

sedエラーの原因は何ですか?

私のグラントファイルには次のコマンドがあります。

"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について懐疑的です。\/-iindex

答え1

  1. -es/foo/bar/ 以前 (*) がありません。
  2. 混乱しています。あなた(スクリプト)が編集中ですindexwww/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
    

    どこ

    • -iFlag は 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/gghttp:\\/\\/localhost:5557API_CONTEXT_URIs


私はいつも使用します-e command。 2つを入れる必要がある場合に備えて、sedが(現在の)単一のコマンドを処理できることがわかりました。過去にもそうだったのかよくわかりません。

関連情報