Я хочу сделать базовую c sed
-линейную вставку, но без заданного диапазона строк.
Используя данный файл примера sample.txt
:
foo
tomato
apple
bar
START_MARKER
tomato
apple
kiwifruit
pineapple
strawberry
END_MARKER
apple
qux
Я хочу добавить строку (скажем, «_____new_line_____») перед любой строкой между «START_MARKER» и «END_MARKER», содержащей «apple». Тогда мой образец стал бы:
foo
tomato
apple
bar
START_MARKER
tomato
_____new_line_____
apple
kiwifruit
_____new_line_____
pineapple
strawberry
END_MARKER
apple
qux
Я пытался:
sed '/^START_MARKER$/,/^END_MARKER$/ /apple/i _____new_line_____' sample.txt
Но я получаю:
sed: -e выражение # 1, символ 33 : неизвестная команда: `/ '
Также пробовал:
sed '/^START_MARKER$/,/^END_MARKER$/ {/apple/i _____new_line_____}' sample.txt
Но я получаю:
sed: -e выражение # 1, символ 0: не соответствует `{'
Если бы я хотел добавить строку" _____new_line_____ "перед всей строкой, содержащей" apple "(без использования START_MARKER и END_MARKER), сработало бы следующее:
sed '/apple/i _____new_line_____' sample.txt
Мне не хватает чего-то связать / объединить выбор шаблона / start /, / end / с моей операцией // i add-line.