在我的 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
。我尝试过更改\\/
为\
逃避/
,但仍然行不通。大家能帮我看看哪里可以看吗?我对命令中的-i
and表示怀疑。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
标志告诉 sed 就地编辑文件。
编辑:感谢 User112638726 和 don_crissti,错误非常明显
sed -i index 's/API_CONTEXT_URI/http:\\/\\/localhost:5557/g' www/index.js
将被 sed 解释为
-i
就地编辑,index
即i
(插入)ndex
,- 到两个文件:
'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
,以防万一我需要放置两个,我发现 sed 可以处理(现在)单个命令,我不确定过去是否是这样。