0

我有一个头文件,其中包含许多#define形式为 的宏AAA_xxxxx,其中AAA始终是一组三码,并且xxxxx始终是一个数值。我需要修改文件,以便将#define AAA_xxxxx其作为#define AAA_xxxxx xxxxx.

我能想到的最好的例子是 Oracle ORA-xxx(错误代码)。例如,如果我有一条像 ...

#define ORA_00001    // "unique constraint violated"

我需要一个脚本来替换该行,使其看起来像...

#define ORA_00001  00001  // "unique constraint violated"

...无需修改文件的其余部分或行本身。

我相信这awk是我的答案,但我似乎无法正确理解语法......

awk '{ if ( $1 == "#define" ) parse_and_print_the_line($0)  ; else print $0 }' 

任何想法(awk 与否)将不胜感激。

4

1 回答 1

2

这是一个简单的 Perl 脚本:

perl -i -pe 's{^(#define(\s+)[A-Z]{3}_(\d+))(?=\s*\/\/|\s*$)}{$1$2$3}' file_to_modify.h

它找到与以下任一模式匹配的任何行:

#define  XYZ_1234234456
#define  XYZ_1234234456    // comment

并将其更改为以下模式之一:

#define  XYZ_1234234456  1234234456
#define  XYZ_1234234456  1234234456    // comment
于 2012-09-21T20:07:23.260 回答