c++ - 使用 sed 命令换行字符串

标签 c++ windows string visual-studio sed

我有一个 C++ 程序,我想在其中将大多数字符串包装在一个 MACRO 中。

例如代码:

#include "header.h"

const char* str;

if (func("Hello, world", "Goodbye", "world") && 
    func(MACRO("Hello, world"), "Hello"))
{
    str = "MACRO(\"didIt\")";
}

应该变成:

#include "header.h"

const char* str;

if (func(MACRO("Hello, world"), MACRO("Goodbye"), MACRO("world")) && 
    func(MACRO("Hello, world"), MACRO("Hello")))
{
    str = MACRO("MACRO(\"didIt\")");
}

请注意,如果字符串已经在 MACRO 中,则不应对其进行双重包装。此外,如果字符串是预处理器语句的一部分,则不应修改它。

我已经尝试使用 sed 来执行此操作,但我不太正确。我是 sed 的新手,所以可能是我做得不对,或者 sed 不能这样做。

如果有帮助,我在 Windows 上运行并使用 Visual Studio。我在我的 Windows 计算机上安装了一个 sed 实用程序,认为这会有所帮助。

谢谢。

最佳答案

您确实想要负向后视sed 不支持。使用更强大的工具,例如 python,例如:

cat prog.cpp | python -c 'import re,sys;for line in sys.stdin: print re.sub(r\''\'(?<!MACRO\()"([^"]*)\''\',"MACRO(\"\g<1>\"))'

关于c++ - 使用 sed 命令换行字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25951667/

相关文章:

Linux下Visual Studio与gcc的C++兼容性

c++ - C++ 标准库的所有成员都派生自一个基类吗?

windows - 您如何获得 Windows 视频驱动程序的版本?

c++ - _pgmptr 发生了什么?

C++ 字符串到固定大小的 char 数组可能吗?

swift - UIImageView UIImage 字符串值 Swift 4

c++ - 为什么多维数组中的空字符串文字会衰减为空指针?

windows - 使用 Chocolatey 安装程序出现网络错误

javascript - 如何使用 JavaScript 从字符串中删除字符?

c++ - 如何使用按钮 'backspace'