如何用sed更改C文件中的宏值

问题描述:

我想用C++文件中的宏值更改为sed
例如,如何用sed更改C文件中的宏值

#define MY_MACRO VALUE1 

#define MY_MACRO VALUE2 

sed的要搜索的已知MY_MACRO名(可以是正则表达式),并设置提供了新的值。调用sed时,旧的宏值不知道。

任何帮助将非常感激。
由于提前,
马库斯

您可以.*匹配任何值:.任何字符相匹配,*意味着重复零次或多次

sed 's/#define MY_MACRO .*/#define MY_MACRO VALUE2/' 

你可以把它与捕获组缩短

sed 's/\(#define MY_MACRO \).*/\1VALUE2/' 

如果#标志必须在一行的开头,你可以添加在一行开始匹配^特殊字符:

sed 's/^\(#define MY_MACRO \).*/\1VALUE2/' 

但是,如果单词之间存在可变数量的空格,它可能变得更加复杂。

+0

这正是我想要的!非常感谢! – Markus