GNU/Linux >> Tutoriales Linux >  >> Linux

¿Usando 'sed' para buscar y reemplazar?

Esta pregunta ya tiene respuestas aquí :¿Cómo puedo reemplazar una cadena en un archivo?

(9 respuestas)
Cerrado hace 6 años.

Sé que esta pregunta probablemente ha sido respondida antes. He visto muchos hilos sobre esto en varios lugares, pero las respuestas suelen ser difíciles de extraer para mí. Estoy buscando ayuda con un ejemplo de uso del comando 'sed'.

Digamos que quería actuar sobre el archivo "hello.txt" (en el mismo directorio que el aviso). Dondequiera que contuviera la frase “pocos”, debería cambiarse a “asd”. ¿Cómo sería el comando?

Respuesta aceptada:

sed es el s tren ed itor, en el que puedes usar | (tubería) para enviar flujos estándar (STDIN y STDOUT específicamente) a través de sed y alterarlos programáticamente sobre la marcha, convirtiéndolo en una herramienta útil en la tradición filosófica de Unix; pero también puede editar archivos directamente, usando -i parámetro mencionado a continuación.
Considere lo siguiente :

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

s/ está acostumbrado a s sustituya la expresión encontrada few con asd :

Los pocos, los valientes.

El asd, el valiente.

/g significa "global", lo que significa hacer esto para toda la línea. Si omite el /g (con s/few/asd/ , siempre tiene que haber tres barras, pase lo que pase) y few aparece dos veces en la misma línea, solo las primeras 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 caracteres especiales al comienzo de las líneas (por ejemplo, reemplazar los símbolos de mayor que algunas personas usan para citar material anterior en hilos de correo electrónico con una tabulación horizontal mientras dejan una desigualdad algebraica citada más adelante en la línea intacto), pero en su ejemplo donde especifica que en cualquier lugar few ocurre, debe ser reemplazado, asegúrese de tener ese /g .

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

-i la opción se usa para editar i n colocar en el archivo hello.txt .

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

Nota:Es importante que uses -i -e para buscar/reemplazar. Si haces -ie , crea una copia de seguridad de cada archivo con la letra 'e' añadida.

Relacionado:abeles -Encontrar significado- ¡Búsqueda en el diccionario!
Linux
  1. buscar y copiar archivos usando Bash

  2. Buscar y copiar archivos

  3. Encontrar archivos ejecutables usando ls y grep

  4. Buscar y reemplazar en secuencias de comandos de shell

  5. encuentra el texto coincidente y reemplaza la siguiente línea

Cómo usar sed para buscar y reemplazar cadenas en archivos

Cómo buscar y reemplazar texto, palabra o cadena en un archivo

Cómo encontrar y reemplazar texto en Vim

Tutorial de Unix Sed:busque y reemplace texto dentro de un archivo usando RegEx

Cómo usar Sed para buscar y reemplazar una cadena en un archivo

Usando tanto el nombre base como la ruta completa en find -exec