вариант sed-i не работает на Солярисе
Я использую sed для замены строки в файле на NULL. Я использовал команду
sed -i "s/.*shayam.*//g" FILE
Это прекрасно работает в linux. shayam заменяется пустым в файле. Но когда я использовал это в solaris, он показывает некоторую ошибку.
Sed: незаконный вариант -- i
Как использовать-I функциональность sed в solaris. Пожалуйста, помогите.
4 ответа:
Опция
-i
специфична для GNU. Версия Solaris не поддерживает эту опцию.Вам нужно будет установить версию GNU или переименовать новый файл поверх старого:
sed 's/.shayam.//g' FILE > FILE.new && mv FILE.new FILE
Я только что ответил на аналогичный вопрос sed-i + что такое же опция в SOLARIS , но для тех, кто находит этот поток вместо этого (я видел его в соответствующем разделе потока):
Основная проблема, которую я вижу в большинстве ответов, заключается в том, что он не работает, если вы хотите изменить несколько файлов. Ответ я дал в другом потоке:Это не совсем то же самое, что sed-i, но у меня была похожая проблема. Вы можно сделать это с помощью perl:perl -pi -e 's/find/replace/g' file
Только копирование / перемещение работает для отдельных файлов. если вы хотите замените некоторый текст через каждый файл в каталоге и подкаталоги, вам нужно что-то, что делает это на месте. вы можете сделать это с perl и находим:
find . -exec perl -pi -e 's/find/replace/g' '{}' \;
Вы, вероятно, используете какой-то конкретный для поставщика Вариант
Обратите внимание, что, как и всегда при использовании нестандартизированных расширений для конкретных поставщиков, нет абсолютно никакой гарантии, что ваш код будет переносимым, что именно является проблемой, которую вы видите. Однако в данном конкретном случае есть гораздо лучшее решение: используйте правильный инструмент для работы.sed
. Если вы хотите использовать нестандартизированные расширения конкретного поставщика вашего нестандартизированного вариантаsed
, вам нужно убедиться, что вы установили указанный нестандартизированный вариант поставщика и должны убедиться, что вы вызываете it и не вызываете соответствующую стандартам версиюsed
, которая является частью вашей операционной системы. окружающая среда.sed
- это редактор потоков (поэтому он называется "sed"), то есть он предназначен для редактирования потоков, а не файлов. Если вы хотите редактировать файлы, используйте файл редактор , напримерed
:ed FILE <<-HERE ,s/.shayam.//g w q HERE
См. также: