Как я могу добавить текст ниже определенного количества строк в sed?

Как я могу добавить текст ниже определенного количества строк в sed?

В частности, если у меня есть следующий файл «Цель»,

$ cat Target
##########
# (1)
##########

echo $PWD


##########
# (2)
##########


##########
# (3)
##########

Как вставить строку между блоком «# (2)» и блоком «# (3)»? В другом мире я хочу создать такой файл «Цель», используя sed.

$ cat Goal
##########
# (1)
##########

echo $PWD


##########
# (2)
##########

echo "yay"

##########
# (3)
##########

Я пробовал разные способы и много гуглил, я не могу найти никакой подсказки. (Почему специальный шаблон '\n' не работает?)

Пожалуйста, дайте мне совет.


sed
person lymose    schedule 05.08.2011    source источник
comment
Это значительно проще сделать с помощью таких языков программирования, как awk, perl и т. д. Если вы можете использовать такое решение, добавьте только 1 тег, чтобы указать, какой язык вы хотите использовать. (На вас будут орать за то, что у вас более 1 языка ;-). Удачи.   -  person shellter    schedule 05.08.2011
comment
Этот вопрос о новых строках в sed может помочь - stackoverflow.com/questions/1251999/   -  person arunkumar    schedule 05.08.2011


Ответы (1)


Это может сработать для вас:

sed '/^# (2)/,/# (3)/{H;//{x;s/.*#\n\n/&echo "yay"\n/p};d}' Target > Goal
##########
# (1)
##########

echo $PWD


##########
# (2)
##########

echo "yay"

##########
# (3)
##########
person potong    schedule 05.01.2012