sed错误的原因是什么?

sed错误的原因是什么?

在我的 grunt 文件中,我有这样的命令

"sed -i index 's/API_CONTEXT_URI/http:\\/\\/localhost:5557/g' www/index.js"

这不是我写的文件;这必须作为一个维护项目来找我。所以我不能正确理解那条线。它应该用 中提供的 URL 替换字符串 API_CONTEXT_URI index.js。错误是

can't read s/API_CONTEXT_URI/http://localhost:5557/g: No such file or directory

根据我的解释,sed找不到index.js。但文件夹index.js里有一个www。我尝试过更改\\/\逃避/,但仍然行不通。大家能帮我看看哪里可以看吗?我对命令中的-iand表示怀疑。index

答案1

  1. -es/foo/bar/ 之前缺少一个(*)
  2. 有一个混乱,你(脚本)正在编辑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标志告诉 sed 就地编辑文件。

编辑:感谢 User112638726 和 don_crissti,错误非常明显

    sed -i index 's/API_CONTEXT_URI/http:\\/\\/localhost:5557/g' www/index.js

将被 sed 解释为

  • -i就地编辑,
  • indexi(插入)ndex
  • 到两个文件:
  • 's/API_CONTEXT_URI/http:\\/\\/localhost:5557/g'www/index.js

我假设,没有名为 的文件,即当前目录中的目录中的目录中的s/API_CONTEXT_URI/http:\\/\\/localhost:5557/g文件。ghttp:\\/\\/localhost:5557API_CONTEXT_URIs


我总是使用-e command,以防万一我需要放置两个,我发现 sed 可以处理(现在)单个命令,我不确定过去是否是这样。

相关内容