sed заменяет строку на условие - PullRequest
3 голосов
/ 12 июля 2011

У меня один файл содержит несколько строк, каждая строка имеет формат вроде

2011-07-10 condition hhh aaa: value bbb
2011-07-10 condition ccc aaa: value bbb

Я хочу использовать sed, чтобы найти строку значения, которая находится между "aaa:" и "bbb", изаменить на "gotit", исходя из условия, что строка, следующая за условием, является ccc.и после sed этот файл становится

  2011-07-10 condition hhh aaa: value bbb
  2011-07-10 condition ccc aaa: gotit bbb

Ответы [ 2 ]

5 голосов
/ 12 июля 2011

Учитывая мои ограниченные знания о sed / regex:

sed 's/\(condition ccc.*aaa: \).*\( bbb$\)/\1gotit\2/' file
2 голосов
/ 12 июля 2011

Вот более логично:

sed '/ccc/{ s/\(.*aaa: \).*\( bbb\)/\1gotit\2/g }' inputfile

sed работает только в строке, содержащей ccc

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