【问题标题】:sed script that replaces a double quoted macro argument string with just the stringsed 脚本,仅用字符串替换双引号宏参数字符串
【发布时间】:2021-02-12 04:25:12
【问题描述】:

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

例如:

MY_MACRO("any_string");

应该改为:

MY_MACRO(any_string);

请注意,“any_string”只是一个示例。它可以是任何字符串(但字符串不会包含任何空格字符)。

我试过了:

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

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

谢谢!

【问题讨论】:

    标签: regex sed


    【解决方案1】:

    你可以使用

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

    这里,

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

    请参阅online demo

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 2022-07-21
      • 2020-07-23
      • 1970-01-01
      • 2017-08-21
      • 1970-01-01
      • 2023-04-07
      相关资源
      最近更新 更多