Я бы, вероятно, выбрал решение Джона 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
следующим образом с условиями слева и командами справа:
/^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/'