За параметром -i
для sed
должно следовать расширение файла, см. man sed
: -i extension - Редактировать файлы на месте, сохраняя резервные копии с указанным расширением.
Он пытается использовать вашу команду s
в качестве расширения имени файла!
Попробуйте это:
sed -i .bak s/$MATCH/$MATCH\n$INSERT/ "$FILE"
Обратите внимание, что опция -i
нестандартна и sed
версии различаются.Например, вам, возможно, придется удалить пробел:
sed -i.bak s/$MATCH/$MATCH\n$INSERT/ "$FILE"
Альтернативой -i
является:
if sed s/$MATCH/$MATCH\n$INSERT/ "$FILE" > "$FILE.bak"
then
mv "$FILE.bak" "$FILE"
fi