viernes, 3 de octubre de 2025

Introducción a Regular Expressions: El comando perl

El comando perl es uno de los más poderosos en Linux para la manipulación y el procesamiento de texto. Gracias a su motor de expresiones regulares, perl ofrece más flexibilidad que herramientas como sed o awk, permitiendo realizar búsquedas, reemplazos y análisis muy complejos en archivos de texto.

A continuación, exploraremos cómo usar perl con regex para modificar y analizar nuestro texto.


Nuestra guía y referencia de estudio es éste cheatsheet (conocidos como chuleta o chivo, en español) y como texto objetivo usaremos el poema Hay Un País en el Mundo, del poeta nacional (dominicano) Pedro Mir (1913-2000).

El comando perl.

Perl es un lenguaje de programación diseñado por Larry Wall en 1987. Perl toma características del lenguaje C, del lenguaje interpretado bourne shell (sh), AWK, sed, Lisp y, en un grado inferior, de muchos otros lenguajes de programación.

Estructuralmente, Perl está basado en un estilo de bloques como los del C o AWK, y fue ampliamente adoptado por su destreza en el procesado de texto y no tener ninguna de las limitaciones de los otros lenguajes de script. (Wikipedia, 2025).

Sintaxis del comando perl:
$ perl -pe 's/regex/reemplazo' archivo
  • -p: procesa el archivo línea por línea y lo imprime.
  • -e: permite ejecutar directamente código en la línea de comandos.

Para cambiar todas las apariciones de "mundo" por "universo":
$ perl -pe 's/mundo/universo/g' hay-un-pais-en-el-mundo.txt
  • s/.../.../g: significa sustitución global en cada línea.

Eliminar todas las líneas que contengan "país":
$ perl -ne 'print unless /país/' hay-un-pais-en-el-mundo.txt
  • -n: procesa el archivo línea a línea, pero no imprime automáticamente.
  • print unless /país/: imprime todas las líneas excepto las que contienen “país”.

Transformar en mayúsculas todas las palabras con más de 8 caracteres:
$ perl -pe 's/\b\w{9,}\b/uc($&)/ge' hay-un-pais-en-el-mundo.txt
    • \b\w{9,}\b: coincide con palabras de 9 o más caracteres.
    • uc($&): convierte la coincidencia ($&) a mayúsculas.
    • e: evalúa el reemplazo como código Perl.

    Imprimir únicamente las líneas que comiencen con vocal:
    $ perl -ne 'print if /^[AEIOUaeiou]/' hay-un-pais-en-el-mundo.txt
    • ^: indica inicio de línea.
    • [AEIOUaeiou]: coincide con vocales en mayúscula o minúscula.

    Contar cuántes veces aparece la palabra "mundo":
    $ perl -ne '$c+=()=/mundo/g; END{print "$c\n"}' hay-un-pais-en-el-mundo.txt 
    • ()=/mundo/g: cuenta todas las coincidencias de “mundo” en cada línea.
    • END{print ...}: imprime el total al final.

    Agregar texto despues de cada línea que termina en "mundo":
    $ perl -pe 's/(mundo)$/\1 - Reflejo de realidad/' hay-un-pais-en-el-mundo.txt 
    • (mundo)$: busca la palabra “mundo” al final de línea.
    • \1: inserta la coincidencia original y añade el texto nuevo.

    Opciones útiles de perl para regex
    • -p: procesa cada línea y la imprime automáticamente.
    • -n: procesa cada línea sin imprimir automáticamente (se usa con condiciones).
    • -i: edita el archivo en su lugar (como sed -i).
    • -e: ejecuta un script corto en línea.


    El comando perl es una de las herramientas más potentes en la terminal para manipular texto con regex, superando en flexibilidad a sed y awk. Con ejemplos aplicados al poema Hay un País en el Mundo, vimos cómo perl puede reemplazar, eliminar, resaltar, contar y transformar texto con gran precisión.

    Su verdadero poder radica en que combina expresiones regulares con la capacidad completa de un lenguaje de programación.

    Puedes profundizar más sobre el comando awk al consultar su manual:

    $ man perl


    Artículos relacionados



    Widget by Hoctro | Jack Book

    0 comments:

    Publicar un comentario