Добавить строку после первого совпадения, используя только sed - PullRequest
0 голосов
/ 26 января 2019

Я использую sed, и у меня есть файл, который содержит

яблоко
апельсин
банан
апельсин

Я хочу вставить "грушу" после 1-готолько оранжевый.Таким образом, вывод должен быть примерно таким:

яблоко
оранжевый
груша
банан
апельсин

Я использовал эту опцию sed:

sed -i '0, / orange / a pear' filename

, но это дает мне вывод примерно такой:

apple
pear
orange
груша
банан
апельсин

Ответы [ 2 ]

0 голосов
/ 27 января 2019

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

sed '0,/orange/!b;//a\pear' file

Сосредоточиться на диапазоне строк от начала файла 0 до первого вхождения строки orange, в противном случае выручить. Если строка содержит первое вхождение строки orange, добавьте строку pear.

0 голосов
/ 27 января 2019

Использование подстановки

s/^orange$/&\npear/;tl;b;:l;{n;bl}

Использование Добавить

/^orange$/ {
    a\
pear
    bl
}
b;:l;{n;bl}
...