Usar ' sed ' para buscar y reemplazar [duplicado]

Esta pregunta ya tiene respuestas aquí :

Comentarios

Respuesta

sed es el s tream ed itor , ya que puede usar | (canalización) para enviar transmisiones estándar (STDIN y STDOUT específicamente) a través de sed y modificarlos programáticamente sobre la marcha, convirtiéndolo en una herramienta útil en la tradición de la filosofía Unix; pero también puede editar archivos directamente mediante el parámetro -i que se menciona a continuación.
Considere lo siguiente :

 sed -i -e "s/few/asd/g" hello.txt  

s/ se utiliza para s sustituir la expresión encontrada few con asd:

Los pocos, los valientes.


Los asd , los valientes.

/g significa «global», lo que significa hacer esto para toda la línea. Si omite /g (con s/few/asd/, siempre debe haber tres barras oblicuas sin importar qué) y few aparece dos veces en la misma línea, solo el primer few se cambia a asd:

Los pocos hombres, las pocas mujeres, los valientes.


Los hombres asd, las pocas mujeres, los valientes.

Esto es útil en algunas circunstancias, como alterar los caracteres especiales al comienzo de las líneas (por ejemplo, reemplazar los símbolos de mayor que que algunas personas usan para citar material anterior en hilos de correo electrónico con una pestaña horizontal mientras deja una desigualdad algebraica entre comillas más adelante en la línea sin tocar), pero en su ejemplo donde especifica que en cualquier lugar few ocurra, debe ser reemplazado , asegúrese de tener /g.

Las siguientes dos opciones (banderas) se combinan en una, :

La opción -i se usa para editar i n lugar en el archivo hello.txt.

-e La opción indica la e xpression / comando para ejecutar, en este caso s/.

Nota: Es importante que use -i -e para buscar / reemplazar. Si lo hace -ie, crea una copia de seguridad de cada archivo con la letra «e» adjunta.

Comentarios

  • Yo ' estoy usando OS X, por lo que vale ', pero este es el error que obtengo: sed: 1: " hello.txt ": código de comando no válido.
  • Se propuso una edición para agregar la -e bandera a sed. La marca -e es opcional siempre que el comando a ejecutar aparezca primero, no haya un archivo de comando y un comando arg, y solo haya un comando.
  • @roo en mac os x, usando -ie Recibo que el archivo foo tiene una copia de seguridad como fooe.
  • este comando me da un archivo adicional que termina con -e, ¿por qué ??: index.html-e sed -i -e ' s / n / d / g ' index.html
  • En Mac, -i -e crea un nuevo archivo con -e agregado al nombre. Esto parece funcionar en bash: sed " -i " " " " -e " " s / few / asd / g " " algún archivo.xml "

Responder

sed -i "s/fea/asd/g" hello.txt 

g: Global

s: sustituto

-i : en tiempo real funciona con archivos inplace

Comentarios

  • Cuando se trata de enlaces simbólicos, es bueno agregar --follow-symlinks de lo contrario -i convertirá el enlace simbólico en una copia (editada) del archivo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *