sed脚本,用字符串替换双引号宏参数字符串



我想使用sed删除宏调用中的双引号(需要更改数百个文件和数千个出现)。

例如:

MY_MACRO("any_string");

应改为:

MY_MACRO(any_string);

注意"any_string"这只是一个例子。它可以是任何字符串(字符串不会包含任何空格字符)。

我试过:

sed -i '/MY_MACRO(/ s/"//g' file.c 

,但这可能会删除不应该删除的":s。

谢谢!

可以使用

sed -i '/MY_MACRO(/ s/("([^"]*)")/(1)/g' file.c

,

  • /MY_MACRO(/-匹配包含MY_MACRO(子字符串的行,然后
  • s/("([^"]*)")/(1)/g-搜索(",然后搜索"以外的零或多个字符(捕获到第1组),然后搜索"),并替换为(+第1组值+)

查看在线演示

最新更新