macos - sustituir - sed buscar
MĂșltiples reemplazos con un comando sed (2)
La página del manual de Apple dice que se pueden especificar múltiples comandos usando las opciones -e o -f. Asi que diria
find . -type f -exec sed -i '''' -e s/Red/$color1/g -e s/Blue/$color2/g {} /;
Esto ciertamente funciona en Linux y otros Unices.
Me pregunto cómo puedo hacer una búsqueda / reemplazo múltiple usando una única declaración de sed
en Mac OSX
. Soy capaz de hacer esto en Ubuntu
pero debido a la naturaleza BSD
de OSX
, el comando debe modificarse ligeramente.
Entonces, dado un archivo con la cadena:
"Red Blue Red Blue Black Blue Red Blue Red"
Quiero ejecutar una sentencia sed que dé como resultado la salida:
"Green Yellow Green Yellow Black Yellow Green Yellow Green"
Mis dos declaraciones sed con un find
calificado
color1="Green"
color2="Yellow"
find . -type f -exec sed -i '''' s/Red/$color1/g {} /;
find . -type f -exec sed -i '''' s/Blue/$color2/g {} /;
He intentado varias combinaciones de puntos y comas y he mirado la página de desarrollo de Apple en busca de sed pero, a falta de ejemplos, no pude juntarlos.
También debería ser posible combinar comandos sed
utilizando un punto ;
coma ;
:
find . -type f -exec sed -i '''' -e "s/Red/$color1/g; s/Blue/$color2/g" {} /;
Me preguntaba qué tan portátil es esto y, a través de este , encontré un enlace a la especificación POSIX de sed
. Especialmente si tienes muchos comandos sed para ejecutar, esto me parece menos abarrotado que escribir varias expresiones sed
.