sed
doesn't haven an -i
option.
Возможно, вы используете какой-то конкретный вариант вендора sed
. Если вы хотите использовать нестандартизированные расширения поставщика, нестандартизированные для вашего нестандартного варианта sed
, вам необходимо убедиться, что вы устанавливаете нестандартизированный вариант конкретного поставщика и должны быть уверены, что вы вызываете это и не вызывать стандартную версию sed
, которая является частью вашей операционной среды.
Обратите внимание, что, как всегда, при использовании нестандартизированных расширений, специфичных для поставщика, нет абсолютно никакой гарантии, что ваш код будет переносимым, что является именно той проблемой, которую вы видите.
В этом конкретном случае, однако, существует гораздо лучшее решение: используйте правильный инструмент для работы. sed
является редактором потока (вот почему он называется «sed»), то есть он предназначен для редактирования потоков, а не файлов.Если вы хотите редактировать файлы, использовать редактор файл, такие как ed
:
ed FILE <<-HERE
,s/.shayam.//g
w
q
HERE
Смотрите также:
Использование Mktemp помогает гарантировать, что мы не ненароком наступите на любые файлы с именем FILE.new ... TMP = $ (Mktemp) && СЕПГ -e 's /.* shayam. * // g' FILE> "$ tmp" && mv "$ tmp" FILE; rm "$ tmp" 2>/dev/null –