我正在尝试使用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/