Ответ 1
Я, вероятно, поеду на решение John sed
, но, так как вы спросили о awk
:
$ echo 'Line1: I just want to make clear of the problem
Line2: Thanks to all who look into my problem
Line3: How to solve the problem?
Line4: Thanks to all.' | awk '/^Line2:/{$0=$0" Please help me"}{print}'
Выводится:
Line1: I just want to make clear of the problem
Line2: Thanks to all who look into my problem Please help me
Line3: How to solve the problem?
Line4: Thanks to all.
Может быть полезно пояснить, как это работает. Подумайте о awk
script следующим образом: условия слева и команды справа:
/^Line2:/ {$0=$0" Please help me"}
{print}
Эти два предложения awk
выполняются для каждой обрабатываемой отдельной строки.
Если строка соответствует регулярному выражению ^Line2:
(что означает "Line2:" в начале строки), вы меняете $0
путем добавления нужной строки ($0
- вся строка, считанная в awk
).
Если строка соответствует пустому состоянию (все строки будут соответствовать этому), выполняется print
. Это выводит текущую строку $0
.
Итак, вы можете увидеть это просто простую программу, которая модифицирует строку, где это необходимо, и выводит строку, модифицированную или неактивную.
Кроме того, вы можете использовать /^Line2:/
как ключ даже для решения sed
, чтобы вы не поднимали Line2
в середине текста или Line20
через Line29
, Line200
через Line299
и так далее:
sed '/^Line2:/s/$/ Please help me/'