Вы неправильно используете команду i
. Вы должны поставить backsla sh после него, а не sla sh.
Furhtermore, переменная не раскрывается, поскольку она находится в одинарных кавычках. Попробуйте поместить его в двойные кавычки, например,
sed "3i\ \"auth_url\":$AUTH," yourfile
Я читал, что команда i
nsert хочет, чтобы все, что следует за обратным символом sh, находилось на новой строке, что здесь не так, где у нас все в одной строке. Я предполагаю, что это GNU sed, который позволяет это.
Чтобы вставить три строки, вы можете использовать это
sed "3i\ \"auth_url\":$SHELL\n \"auth_url\":$SHELL\n \"auth_url\":$SHELL" os
И это хорошо работает с запятыми, так как они не имеют специального значения:
sed "3i\ \"auth_url\":$SHELL,\n \"auth_url\":$SHELL,\n \"auth_url\":$SHELL,"