Ответ 1
Apple man page says Несколько команд могут быть указаны с помощью опций -e или -f. Поэтому я бы сказал,
find . -type f -exec sed -i '' -e s/Red/$color1/g -e s/Blue/$color2/g {} \;
Это, безусловно, работает в Linux и других Unices.
Мне интересно, как я могу выполнить множественный поиск/замену, используя один sed
statment в Mac OSX
. Я могу сделать это в Ubuntu
, но из-за BSD
характера OSX
, команда должна быть слегка изменена.
Итак, учитывая файл со строкой:
"Red Blue Red Blue Black Blue Red Blue Red"
Я хочу запустить инструкцию sed, которая выводит результат:
"Green Yellow Green Yellow Black Yellow Green Yellow Green"
Два моих оператора sed с квалификационным find
color1="Green"
color2="Yellow"
find . -type f -exec sed -i '' s/Red/$color1/g {} \;
find . -type f -exec sed -i '' s/Blue/$color2/g {} \;
Я попробовал несколько комбинаций точек с запятой и слэшами и посмотрел на страница разработчика Apple Dev для sed, но с отсутствием примеров, я не мог собрать его вместе.
Apple man page says Несколько команд могут быть указаны с помощью опций -e или -f. Поэтому я бы сказал,
find . -type f -exec sed -i '' -e s/Red/$color1/g -e s/Blue/$color2/g {} \;
Это, безусловно, работает в Linux и других Unices.
Также можно объединить команды sed
с помощью точки с запятой ;
:
find . -type f -exec sed -i '' -e "s/Red/$color1/g; s/Blue/$color2/g" {} \;
Мне было интересно, как это переноситься и найти через fooobar.com/info/276303/... ссылку на Спецификация POSIX sed
. Особенно, если у вас много команд sed для запуска, это кажется мне менее суматоху, чем писать несколько выражений sed
.