Эквивалентом вашего sed -i '1s/^/<start</' file
будет:
sed -i '$s/$/>end>/' file
Это добавит текст >end>
в последнюю строку (без новой строки )файла. Конечно, в этом случае (как и в вашем примере также )нужно, чтобы файл содержал хотя бы одну строку (непустую ).
Использование двойных кавычек (, как в выбранном ответе ), не является хорошей идеей, так как тогда оболочка будет пытаться обработать каждое $
в строке. Команда преобразуется в:
sed -i "\$s/\$/>end>/" file
При использованииa
(append, end )илиi
(insert, start )также будет вставлена новая строка, потребуются разные вызовы в BSD и GNU, и по-прежнему потребуется не -пустой файл.
Для GNU:
$ sed '1i<start<' file
$ sed '$a>end>' file
Для BSD:
$ sed '1i\
<start<' file
$ sed '$a\
>end>' file
Или, в оболочках, которые это позволяют (C -string):
$ sed $'1i\\\n<start<' file
$ sed $'$a\\\n>end>' file
Конечно, нет ничего проще:
echo '>end>' >> file
который работает и с пустыми файлами.