una sustituir reemplazo palabra linea eliminar con comando cadena buscar macos shell sed bsd

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 .