Во-первых, давайте пока оставим флаг -i
и немного упростим команду:
sed "/'foo']/s/$/ "bar"/"
В вашем выражении есть как одинарные, так и двойные кавычки, а sed
не понимает, где начинается и заканчивается команда. Как написано, похоже, что это:
sed "/'foo']/s/$/ "
(с некоторой тарабарщиной), которая явно имеет неопределенную команду s
. Мы могли бы использовать одинарные кавычки вместо двойных кавычек для разметки команды, но тогда у нас возникла бы та же проблема с одинарными кавычками около foof
. Поэтому мы избегаем этих внутренних двойных кавычек с обратной косой чертой:
sed "/'foo']/s/$/ \"bar\"/"