На этот вопрос уже есть ответ здесь:
Я хочу вставить текст из переменной в определенную строку текстового файла.
$cat foo
hello
hello
$var=`cat foo`
$echo "$var"
hello
$cat bar
some
text
Я хочу вставить $ var во вторую строку, но sed не читает содержимое переменной:
sed -i -e '2i$var\' bar
hello
$var
world
Думаю, из-за двух одинаковых слов в foo я получаю следующее:
sed: -e expression #1, char 11: extra characters after command
Вы называете переменные в sed двойными кавычками
sed -i -e "2i$var" bar