在makefile中将包含变量名的字符串替换为sed

在makefile中将包含变量名的字符串替换为sed,sed,makefile,Sed,Makefile,我想使用sed将Makefile中的字符串替换为另一个字符串: * old string: $(ISM_DEPTH)/obj/lib/mylib.a * new string: $(ENVIRONMENT_ROOT)/lib/ 所以,我用了这个命令: sed -e 's,$(ISM_DEPTH)/obj/lib/mylib.a,$(ENVIRONMENT_ROOT)/lib/,g' -i Makefile 问题是sed将用它们的值替换$(ISM\u DEPTH)和$(ENVIRONMENT\

我想使用sed将Makefile中的字符串替换为另一个字符串:

* old string: $(ISM_DEPTH)/obj/lib/mylib.a
* new string: $(ENVIRONMENT_ROOT)/lib/
所以,我用了这个命令:

sed -e 's,$(ISM_DEPTH)/obj/lib/mylib.a,$(ENVIRONMENT_ROOT)/lib/,g' -i Makefile

问题是sed将用它们的值替换$(ISM\u DEPTH)和$(ENVIRONMENT\u ROOT),我不想这样做。

您需要转义
$
字符。要在Makefile中执行此操作,需要编写双美元-
$$

sed -e 's,$$(ISM_DEPTH)/obj/lib/mylib.a,$$(ENVIRONMENT_ROOT)/lib/,g' -i Makefile
可能重复的