Добавление строки перед / сразу после матча через 'sed' - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть куча файлов со строками, которые я хочу найти для определенного c соответствия: " exampledata "

Выглядит так:

...(...name: Example; age: 21; version: 2131; exampledata: hello;) end

, если в строке, то "exampledata" определено , тогда ничего не делать , в противном случае добавить , что строка exampledata с, скажем, числом справа после номера версии (который может быть 1 шифром или до 5-6) ИЛИ поместите его прямо перед закрывающей скобкой ") ", которая всегда является шаблоном в строках. (т.е. «Exampledata» идет сразу после версии и в конце строки. После него идет только «) ».)

sed '/exampledata:"/b; /\version.....;\/s/&"exampledata: 2"/'

это то, что я до сих пор работал Я не знаю, как сделать точки после интерактивной версии b c. в каждой строке может быть одна версия шифра или большее число. Идеи?

В основном я ищу команду sed, которая добавляет "exampledata: 2;" например, если раньше вообще не было примеров? (результат будет таким: blabla ... (... версия: 98; примеры: 2;)

1 Ответ

1 голос
/ 10 февраля 2020

У ваших шаблонов есть двойные кавычки, которые не появляются в данных.

sed '/exampledata:/!s/version: [0-9]*;/& exampledata: 2;/'

/exampledata:/! заставляет команду выполняться в строках, которые не содержат exampledata:, а затем выполняет более правильная замена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...