Как добавить текст под определенным количеством строк в sed? - PullRequest
2 голосов
/ 05 августа 2011

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

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

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

echo $PWD


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


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

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

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

echo $PWD


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

echo "yay"

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

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

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

Ответы [ 2 ]

1 голос
/ 06 января 2012

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

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

echo $PWD


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

echo "yay"

##########
# (3)
##########
1 голос
/ 05 августа 2011
sed '/# (2)/ {n;n;a\
echo "yay"
}' Target > Goal
...