En Unix/Linux, SED es un comando dedicado para editar transmisiones. Aquí es donde viene el nombre del comando (editor de transmisión). Toma una secuencia como entrada, filtros y transforma su contenido, y genera el resultado según las instrucciones.
En esta guía, echaremos un vistazo al uso de SED con las expresiones regulares (regex para abreviar) para reemplazar el contenido en un archivo de texto. Esta guía utilizará la versión GNU/Linux de SED.
Agarrando un archivo de texto de muestra
Para fines de demostración, creamos un archivo de texto simple con algún texto para practicar nuestros comandos SED. Cree un archivo de texto usando Nano:
$ nano sed-práctica.TXT
Dentro del archivo, ingrese el siguiente texto:
#!/bin/bash
Echo "The Quick Brown Fox"
Echo "salta sobre el perro perezoso"
Reemplazar textos usando SED
La estructura de comando principal de SED para reemplazar textos es la siguiente:
$ sed -i 's /// g'
Aquí:
Vamos a probarlo. En el siguiente ejemplo, reemplazamos el con EL en la práctica de sed.TXT:
$ sed -i 's/the/the/g' sed -práctica.TXT
Verificar los cambios.
$ Cat Sed-Practice.TXT
Como puede ver, cambiamos con éxito el contenido del archivo.
Trabajando con caracteres delimitadores
Como se describe en la sección anterior, las instrucciones SED vienen con caracteres delimitadores para separar las diversas partes. Si queremos reemplazar los textos que contienen el carácter delimitador, tenemos que usar la barra de back -slash (\) para escapar de él.
Echemos un vistazo al siguiente ejemplo:
$ sed -i 's/\/bin \/bash/\/usr \/bin \/zsh/g' sed -práctica.TXT
Aquí, reemplazamos el/bin/bash con/usr/bin/zsh. Verifique si el intento es exitoso.
$ Cat Sed-Practice.TXT
Usando este patrón en zigzag del delantero y las versas de fondo, puede volverse extremadamente confuso. Por eso es una práctica común usar otros delimitadores como el colon (:) o la barra vertical (|). Reescribamos el comando usando la barra vertical como delimitador:
$ sed -i 's |/usr/bin/zsh |/bin/bash | g' sed -práctica.TXT
Conjuntos de personajes regex
Podemos usar los conjuntos de caracteres para describir un conjunto de caracteres para reemplazar en SED. Aquí hay algunos conjuntos de personajes comunes que te encontrarás:
En el siguiente ejemplo, reemplazamos todos los dígitos con el alfabeto. Eche un vistazo al siguiente ejemplo:
$ Echo 1001001 | sed -e 's | [0-9] | k | g'
Aquí, SED reemplaza todos los dígitos (1 y 0, en este caso) encuentra con la letra K.
¿Qué pasa si queremos reemplazar 1 con A y 0 con B? Aquí hay una forma de lograr esto:
$ Echo 1001001 | sed -e 's | 1 | a | g' | sed -e 's | 0 | b | g'
Aquí, el primer comando SED reemplaza 1 con un. La salida se lanza a un segundo comando SED que reemplaza 0 con B.
Conclusión
En esta guía, demostramos brevemente las diversas formas de usar SED para encontrar y reemplazar los textos. Con la ayuda de Regex, pudimos ajustar la búsqueda y reemplazar el contenido exacto. Aprenda más sobre SED Regex.
Con la ayuda de algunas herramientas adicionales como Find, podemos usar SED incluso para modificar recursivamente los archivos de un directorio completo.
También podemos implementar SED en los scripts bash para realizar una edición de flujo más compleja. Obtenga más información sobre el viaje inicial con scripting bash.