如何在awk中搜索“$(目标)?
在Makefile中,当行包含模式all:时,我尝试将$TARGET自动替换为$OBJ1$OBJ2。 假设Makefile是如何在awk中搜索“$(目标)?,awk,Awk,在Makefile中,当行包含模式all:时,我尝试将$TARGET自动替换为$OBJ1$OBJ2。 假设Makefile是 all: $(TARGET) 当我执行awk'/all:/{gsub$TARGET,$OBJ1$OBJ2;print}'Makefile时,它会给我 all: $(TARGET) 这意味着模式搜索失败。我试着把\放在$前面,但没有成功。我该怎么做?我也试过呆呆地看 补充:找到一个解决方法后,发现另一个问题 这就成功了。它使用常规表达式。只需$place。 但这是一
all: $(TARGET)
当我执行awk'/all:/{gsub$TARGET,$OBJ1$OBJ2;print}'Makefile时,它会给我
all: $(TARGET)
这意味着模式搜索失败。我试着把\放在$前面,但没有成功。我该怎么做?我也试过呆呆地看
补充:找到一个解决方法后,发现另一个问题
这就成功了。它使用常规表达式。只需$place。
但这是一个权宜之计,应该有一个真正的解决方案来搜索$character。不管怎样,我把它放在这里是为了有人能得到帮助
awk '/all:/{sub(".(TARGET)","$(OBJ1) $(OBJ2)");print}' Makefile
但是输出是这样的:
all: obj obj2 taxi_output $$(OBJ1) $(OBJ2))
OBJ1前有两个美元符号,末尾有两个字符。我应该怎么做?使用sed:
sed '/^all:/{s/$(TARGET)/$(OBJ1) $(OBJ2)/g}' Makefile
还可以使用-i标志覆盖文件
这些与awk一起工作:
awk '/all:/{gsub("[$][(]TARGET[)]","$(OBJ1) $(OBJ2)"); print}' Makefile
awk '/all:/{gsub("\\$\\(TARGET\\)","$(OBJ1) $(OBJ2)"); print}' Makefile
awk '/all:/{gsub(/\$\(TARGET\)/,"$(OBJ1) $(OBJ2)"); print}' Makefile