Как завершить команду `i` в GNU sed?

Я пытаюсь использовать sed сделать несколько замен и вставок входной строки.

Однако недавно я заметил, что команда вставки i не заканчивается на ; как другие, и вместо этого печатает остальную часть строки.

$ sed "s/^foo/bar/; 1i foo foo foo; s/foo$/baz/;"

При запуске этой команды на следующем входе,

foo bar baz

Я получаю следующий неверный вывод.

foo foo foo; s/foo$/baz/;
bar bar baz

Как правильно завершить эту команду?

1 ответ

Решение

Вы можете использовать несколько -e разделенные запросы в одной команде:

sed -e 's/^foo/bar/' -e '1i foo foo foo' -e 's/foo$/baz/' <<< "foo bar baz"

Смотреть онлайн sed демо Выход:

foo foo foo
bar bar baz
Другие вопросы по тегам