我想使用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组值+)
。
查看在线演示