Cómo modificar texto usando expresiones regulares con sed Stream Editor

Share on facebook
Share on twitter
Share on linkedin
Share on telegram
Share on whatsapp

Contenidos

Cómo modificar texto usando expresiones regulares con sed Stream Editor

Todos los usuarios de computadoras en el mundo, tarde o temprano, modificarán una cadena de texto, ya sea de forma manual o automática. Sea presentado a la editor de flujo sed, que le posibilita realizar modificaciones masivas de texto en cadenas y archivos.

Expresiones regulares en la línea de comandos

El editor de secuencia sed, una herramienta disponible de forma predeterminada en muchas distribuciones de Linux, le posibilita analizar y transformar texto de una manera fácil y directa, ya sea que dicho texto esté dentro de archivos o simplemente cadenas simples en la línea de comandos. Además puede analizar listas de directorios, resultados de listas de procesos y la mayoría de los otros tipos de información que pueden fluir dentro o fuera de su sesión de terminal.

Para verificar si sed está habilitada en su distribución de Linux, escriba sed --version en la línea de comando:

Versión del editor de sed stream

No se preocupe si su versión es un poco más antigua que la que se muestra aquí. Casi definitivamente estará bien para los ejemplos que discutimos aquí. Si la herramienta no está habilitada en su distribución, puede instalarla usando sudo apt install sed para sistemas operativos basados ​​en Ubuntu / Debian, o sudo yum install sed para sistemas operativos basados ​​en RedHat / RPM.

sed aplica una pequeña transformación de texto usando lo que se llama una expresión regular o expresión regular. Una expresión regular es una forma y método de expresar operaciones de búsqueda, reemplazo y modificación sustentadas en texto más complejas en un formato aún legible por humanos. Las expresiones regulares son complicadas y pueden resultar difíciles de leer para los principiantes. Puede leer nuestra guía, ¿Cómo se utiliza verdaderamente Regex? Para obtener más información acerca de cómo leer y escribir Regex.

RELACIONADO: ¿Cómo se utiliza verdaderamente Regex?

Para el propósito de este post, nos quedaremos con expresiones regulares fáciles de comprender y leer. A modo de ejemplo, el siguiente es un reemplazo simple:

Hola, transformación de los fans de Cloudsavvyit

Como puede ver, hicimos eco de un pequeño fragmento de texto y, posteriormente, lo transformamos usando la herramienta sed. Empleamos el uso del comando sed ‘s’ (sustituto) e indicamos lo que queríamos cambiar. Puede leer esto de otra manera como s|from|to| donde ‘|’ es el separador entre secciones / campos, ‘s’ es el comando y ‘desde’ y ‘hasta’ son las dos opciones pasadas al comando ‘s’.

Por eso, transformamos ‘¡Hola, fans de las tecnologías de la información de la nube!’ a «¡Hola, fans de systempeaker.com!» cambiando solo una parte del texto usando el editor de flujo sed. Tomemos un ejemplo un poco más complejo.

Transformar texto en un archivo usando el editor sed stream

Aquí primero creamos un archivo con 3 líneas usando el echo comando con redirección a un archivo (‘>’ crea un nuevo archivo, sobrescribiendo un archivo con el mismo nombre si existe, y ‘>>’ se agrega a un archivo sin modificarlo de otra manera). A continuación, mostramos el contenido del archivo usando el cat mando.

Posteriormente transformamos el contenido del archivo con el sed herramienta de forma directa. Para hacerlo, especificamos la opción ‘-i’ para sed que edita el archivo en el lugar. La instrucción de transformación textual real es la misma que antes. Y por último especificamos el nombre del archivo al final del comando. Posteriormente verificamos el contenido del archivo y notamos cómo ha cambiado nuestra entrada.

Como puede comenzar a ver, o ya sabe por experiencias pasadas, hay mucho poder disponible en la herramienta sed.

Condimentemos un poco las cosas ampliando nuestra expresión regular y método de escritura de la instrucción de transformación de texto sed:

Una expresión regular más compleja y una instrucción sed

En este ejemplo, sustituimos la letra ‘h’ por ‘_H’ y lo hicimos de forma global (observe el calificador ‘g’ cerca del final de la primera instrucción pasada a sed) y sin distinción entre mayúsculas y minúsculas (observe la ‘i’ calificador además cerca del final de la primera instrucción). La ‘h’ coincide aún cuando el archivo contenga ‘H’ debido al calificador ‘i’.

Posteriormente empezamos una nueva instrucción (las instrucciones terminan / terminan con ‘;’ del mismo modo que en muchos otros lenguajes de codificación) en la que eliminamos ‘.com’ simplemente buscándolo y reemplazándolo con nada.

Tenga en cuenta además cómo hemos utilizado diferentes separadores de alternativas de campo / comando. En el primer ejemplo usamos ‘|’ que en general es un separador de campo fácil de utilizar y bastante poco común. Mucha gente utiliza ‘/’, aún cuando esto puede generar problemas al analizar los nombres de las rutas que a menudo contienen ‘/’.

Poder utilizar diferentes separadores de alternativas de campo / comando le posibilita utilizar fácilmente otro separador si su cadena de texto verdaderamente contiene o probablemente contendrá un carácter específico.

Usando sed con archivos

Exploremos otro ejemplo basado en sed donde inyectaremos texto en un archivo:

Inyectando texto usando el editor sed stream

En este ejemplo, creamos un archivo con 5 líneas y posteriormente usamos una instrucción sed ligeramente compleja para inyectar un separador ‘-‘ después de cada segunda línea. Aunque la sintaxis se explica principalmente por sí misma, es interesante notar que el comando ‘r’ (leer / agregar texto de un archivo) especifica el nombre del archivo de inyección de forma directa y mientras aún está dentro de la instrucción principal, sin ningún separador.

Además puede comenzar a ver que, al mismo tiempo de aprender una sintaxis de expresión regular, es beneficioso aprender la sintaxis sed en profundidad. Es casi como aprender dos nuevos idiomas extranjeros, pero el beneficio es que la sintaxis sed puede crecer con su necesidad de complejidad adicional.

Exploremos un ejemplo en el que reemplazamos un área de texto específica con otra cosa:

Modificar áreas de texto específicas usando sed

En este ejemplo, buscamos el texto ‘3’, y para esa línea sustituiremos ‘C’ por ‘Z’. Ya ves lo versátil que puede ser sed.

Para terminar, podemos analizar el análisis de otros tipos de entrada:

Analizar otros tipos de entrada textual con sed

Como puede ver, creamos 3 archivos y solicitamos una lista de directorios usando el ls mando. Posteriormente tomamos esa salida como entrada a sed (usando el comando de tubería de Linux, ‘|’) y transformamos parte de nuestra lista de directorios en un guión bajo.

El editor de secuencia sed es una herramienta versátil que puede ayudarlo a analizar y transformar casi cualquier texto de forma directa desde la línea de comando del terminal, ya sea que la entrada provenga de un simple echo declaración, otras herramientas de Linux o desde un archivo de texto plano. ¡Disfrutar!

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.