Если вы хотите отредактировать файл в скрипте, я считаю, что ed
работает намного лучше, чем нестандартный sed -i
(Не в последнюю очередь, потому что он изначально предназначен для работы с файлами, а не отдельными строками в потоке, который делает более сложные вещи намного проще):
$ cat foo.txt
- line 1
- line 2
- line 3
$ printf "%s\n" 2i " test" "" . w | ed -s foo.txt
$ cat foo.txt
- line 1
test
- line 2
- line 3
или в форме heredo c, которую обычно легче читать:
ed -s foo.txt <<EOF
2i
test
.
w
EOF