Есть ли способ сопоставить шаблон в блоке текста, границы которого представляют собой два уникальных шаблона в разных строках? Под этим я подразумеваю:
/*some comment*/
void something_patternWord1()
{
some_code;
some_code;
some_code_patternWord3;
some_code;
}
/*some comment patternWord2
Желаемый результат:
/*some comment*/
void something_patternWord1()
{
some_code;
some_code;
new_line_of_some_code; //after performing sed command
some_code_patternWord3;
some_code;
}
/*some comment patternWord2
Что я пробовал:
sed '/patternWord1/,/patternWord2/{/patternWord3/i new_line_of_some_code;}' inputFile > outputFile
Приведенная выше команда не работает.
В конечном счете, я пытаюсь добиться использования скрипта bash
, чтения некоторых файлов из файла .csv
, и если слово для чтения имеет значение someWord
, тогда поиск ограниченного блока текстана patternWord1
и patternWord2
, сопоставьте patternWord3
в этом блоке текста и вставьте некоторый код над ним.
У меня много .cpp
файлов с множеством различных функций и, следовательно, много комбинаций разных patternWord1
и patternWord2
.
Возможно ли то, что я пытаюсь сделать, с помощью sed
, и является ли sed
лучшим инструментом для чего-то подобного?
Возможно, другой подход:Можно ли будет использовать операторы if-then
в bash
при чтении сценария в файле .cpp
, а , а затем использовать команду sed
, чтобы сопоставить patternWord3
и вставитьновая строка кода?
Если бы вы могли помочь мне с sed
, это было бы здорово, но я также открыт для других предложений, если это имеет больше смысла / это более эффективно. Заранее спасибо.