Как завершить команду `i` в GNU sed? - PullRequest
2 голосов
/ 28 июня 2019

Я пытаюсь использовать 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 Ответ

3 голосов
/ 28 июня 2019

Вы можете использовать несколько -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
...