Использование Awk
Входной
$ cat f
start
exit 0
status
exit 0
stop
exit 0
Выходной
$ awk '/exit/ && p {sub($NF,"152")}{p=/status/}1' f
start
exit 0
status
exit 152
stop
exit 0
Объяснение
p=/status/
Установить переменную p
верно, когда awk
находит статус слова
/exit/ && p
когда awk
находит слово выхода на текущей записи и переменная p
оценивает истинный затем
суб (регулярное выражение, замену [, цель ])
Море rch target, которая рассматривается как строка, для самой левой, самой длинной подстроки, соответствующей регулярному выражению regexp. Измените всю строку, заменив замененный текст замененным. Измененная строка становится новым значением цели. Верните количество замещений (ноль или один). Если третий аргумент опущен, то по умолчанию используется и изменяет $0
.
Заменитель последнее поле ($NF
) с 152
текущей записи, так как третий аргумент не задан, следовательно, по умолчанию $0
изменяется.
1
всегда истинно, она выполняет операцию {print $0}
Большое спасибо, что об использовании СЭД –
sed для простых подстановок на отдельных линиях, вот и все.Использование sed для чего-либо еще совершенно неуместно, поскольку всегда есть более четкие, эффективные, надежные, переносимые, поддерживаемые, расширяемые и т. Д. Способы делать то, что вы хотите сделать, и для этого потребуется использование тайных языковых конструкций, которые стали устаревшими более 40 лет назад, когда был изобретен awk. –