替换bash脚本(MacOS)中的字符串



我在Makefile中生成了以下代码:

${SED} -i '' -e "s|(DESTDIR)|${DESTDIR}|g" $(pcfiles)
#   ${SED} -i "s|(DESTDIR)|${DESTDIR}|g" $(pcfiles)

我想用代替

#   ${SED} -i '' -e "s|(DESTDIR)|${DESTDIR}|g" $(pcfiles)
${SED} -i "s|(DESTDIR)|${DESTDIR}|g" $(pcfiles)

所以这只是一个注释掉一行,然后用另一行替换的问题。

但由于单引号和双引号,我无法实现。

如果某位正则表达式专家愿意花1-2分钟帮助我那就太好了。

我在这里拔头发。

感谢

# Comment out 1st line.
sed -E 's`([[:space:]]*${SED} -i '"''"' -e "s|(DESTDIR)|${DESTDIR}|g" $(pcfiles))`#1`' Makefile
# Uncomment 2nd line.
sed -E 's`#([[:space:]]+${SED} -i "s|(DESTDIR)|${DESTDIR}|g" $(pcfiles))`1`' Makefile 

sed命令是单引号字符串,通常更容易使用(不必担心shell会扩展字符串)。

第一个命令的棘手之处在于,单引号不能包含在一个单引号字符串中(甚至转义也不是一个选项),因此该命令只需拆分为两个单引号的字符串,其中"''"-相当于''-拼接在一起

另一个棘手的方面是获取所有特殊regex字符的转义。正确的

相关内容

  • 没有找到相关文章

最新更新