Sed en su lugar Editar archivo

Sed en su lugar Editar archivo

“En el ecosistema Unix/Linux, el comando SED es una herramienta dedicada para editar transmisiones, de ahí el nombre (editor de transmisión). Recibe entradas de texto como "transmisiones" y realiza las operaciones especificadas en el flujo."

En esta guía, exploraremos realizar la edición de archivos en el lugar con SED.

Requisitos previos

Para realizar los pasos demostrados en esta guía, necesitará los siguientes componentes:

    • Cualquier distribución moderna de Unix/Linux. Para esta guía, usaré Ubuntu 20.04 LTS ejecutándose en VirtualBox.
    • Un emulador terminal adecuado, preferiblemente con resaltamiento de sintaxis. Echa un vistazo a algunos de los mejores emuladores de terminales en Linux.

Edición de la corriente usando SED

Primero, echemos un vistazo a la forma en que Funciona SED. La estructura de comando de SED es la siguiente:

$ sed


El siguiente comando muestra un flujo de trabajo simple de SED:

$ Echo "The Quick Brown Fox" | Sed -e 's/Quick/Fast/'



Aquí,

    • El comando echo imprime la cadena en Stdout. Obtenga más información sobre Stdin, Stdout y Stderr.
    • Estamos tuviendo la salida al sed Aquí, Stdout es la transmisión sed que realizará la tarea especificada.
    • El sed El comando, como se especifica, buscará cualquier instancia de la palabra rápido y reemplácelo con rápido. La transmisión resultante se imprimirá en la consola.

¿Qué pasaría si quisiéramos modificar los textos de un archivo de texto?? El comando SED también puede funcionar usando archivos de texto como transmisión. Para la demostración, he tomado el siguiente archivo de texto:

$ Cat Demo.TXT



El siguiente comando SED reemplazará todas las instancias de el con cañón:

$ sed -e 's/the/da/g' demostración.TXT



Verifique el contenido de manifestación.TXT Para los cambios:

$ Cat Demo.TXT



Del último ejemplo, podemos ver que SED solo imprimió la transmisión resultante en la consola. El archivo fuente (manifestación.TXT) no fue tocado.

Edición de archivos en el lugar utilizando SED

Como se demuestra en el ejemplo anterior, la acción predeterminada de SED es imprimir el contenido cambiado en la pantalla. Es una gran característica que puede evitar cambios accidentales en los archivos. Sin embargo, si queríamos guardar los cambios en el archivo, necesitábamos proporcionar algunas opciones adicionales.

Una técnica simple y común sería reemplazar el contenido del archivo con el sed producción. Eche un vistazo al siguiente comando:

$ Cat Demo.txt | sed 's/the/da/g' | demo de tee.TXT



Aquí, estamos sobrescribiendo el contenido de manifestación.TXT con la salida del sed dominio.

Mientras que el comando funciona según lo previsto, requiere escribir códigos adicionales. Involucramos los comandos de gato y tee junto con el comando SED. Bash también está involucrado en la redirección de las salidas. Por lo tanto, el comando es más intensivo en recursos de lo que debe ser.

Para resolver esto, podemos usar la función de edición en el lugar de SED. En este modo, sed cambiará el contenido del archivo directamente. Para invocar el modo de edición en el lugar, tenemos que usar el -i o -en su lugar bandera. La siguiente sed El comando lo implementa:

$ sed -in -place -e 's/the/da/g' demostración.TXT



Controlar manifestación.TXT Para los cambios:

$ Cat Demo.TXT



Como puede ver, el contenido del archivo se cambia sin agregar componentes adicionales.

Pensamientos finales

En esta guía, demostramos con éxito realizar ediciones en el lugar en archivos de texto utilizando sed. Si bien SED en sí es un programa simple, la principal fuente de poder se encuentra dentro de su capacidad para incorporar expresiones regulares. Regex permite describir patrones muy complejos en los que actúa SED. Echa un vistazo a Regex en SED para aprender más en profundidad.

Alternativamente, puede usar scripts bash para filtrar y modificar el contenido de un archivo. De hecho, puede incorporar SED en sus scripts para ajustar el contenido de texto. Echa un vistazo a esta guía sobre cómo comenzar con Bash Scripting.

Computación feliz!