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 }' 

どんなアイデアでも(問題があるかどうかにかかわらず)大歓迎です。

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 に答える