我正在尝试使用Cygwin中的sed进行搜索和替换:

SRC_FOLDER_MAIN=bra
TGT_FOLDER_MAIN=tag

但是以下sed命令不起作用:
sed 's/${SRC_FOLDER_MAIN}/${TGT_FOLDER_MAIN}/g' externals.txt > externals_mod.txt

例如,这可以正常运行(将“bra”替换为“tag”):
sed 's/bra/tag/g' externals.txt > externals_mod.txt

我想念什么?

可能是Cygwin出了问题吗?

最佳答案

如果需要在sed中传递shell变量,则需要将它们从单引号中删除
这样尝试
sed 's/'${SRC_FOLDER_MAIN}'/'${TGT_FOLDER_MAIN}'/g' $externals.txt > $externals_mod.txt
注意'之前和之后的${SRC_FOLDER_MAIN},以及${TGT_FOLDER_MAIN}中的类似内容

更新:示例

[[bash_prompt$]]$ cat log
we will replace aaaa with bbbb
[[bash_prompt$]]$ a=aaaa;b=bbbb
[[bash_prompt$]]$ sed 's/'${a}'/'${b}'/g' log > new_log
[[bash_prompt$]]$ cat new_log
we will replace bbbb with bbbb

关于sed - sed搜索并替换Cygwin中的语法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16417840/

10-11 22:36
查看更多