Разобрать поиск / заменить заголовочный файл с отформатированными результатами

У меня есть заголовочный файл с большим количеством #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 или нет) будет принята с благодарностью.

0

Решение

Вот простой 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
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector