Extracción de información de enlaces a partir de texto

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este proyecto, aprenderás a extraer información de enlaces de documentos Markdown utilizando un script de Bash. Esta es una tarea común en el desarrollo de software, donde los desarrolladores necesitan procesar y extraer información específica de documentos basados en texto.

👀 Vista previa

$./getlink.sh labex_lab1.md
curso https://labex.io/cursos/

🎯 Tareas

En este proyecto, aprenderás:

  • Cómo crear un script de Bash para extraer texto de enlace y URLs de un documento Markdown
  • Cómo utilizar expresiones regulares y herramientas de línea de comandos como grep y paste para procesar datos de texto
  • Cómo hacer que un script sea ejecutable y lo ejecute con argumentos de línea de comandos

🏆 Logros

Después de completar este proyecto, podrás:

  • Desarrollar un script de Bash que pueda extraer información de enlaces de documentos Markdown
  • Comprender la lógica y la implementación del script, incluyendo el uso de expresiones regulares y herramientas comunes de línea de comandos
  • Aplicar las habilidades aprendidas en este proyecto a otras tareas de procesamiento de texto en tu trabajo de desarrollo de software

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux/BasicFileOperationsGroup -.-> linux/rm("File Removing") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/TextProcessingGroup -.-> linux/sed("Stream Editing") linux/TextProcessingGroup -.-> linux/paste("Line Merging") subgraph Lab Skills linux/rm -.-> lab-301471{{"Extracción de información de enlaces a partir de texto"}} linux/grep -.-> lab-301471{{"Extracción de información de enlaces a partir de texto"}} linux/sed -.-> lab-301471{{"Extracción de información de enlaces a partir de texto"}} linux/paste -.-> lab-301471{{"Extracción de información de enlaces a partir de texto"}} end

Crea el script getlink.sh

En este paso, crearás el script getlink.sh que puede extraer todos los enlaces de un documento Markdown.

  1. Abre un editor de texto y crea un nuevo archivo llamado getlink.sh.
  2. Agrega el siguiente código al archivo:
#!/bin/bash

## Extrae el enlace
grep -E "\[.*\]\(.+\)" "$1" | grep -vP '\!\[' | grep -oP '\[\K[^\]]+(?=\]\([^\)]+\))' > "links.txt"
grep -E "\[.*\]\(.+\)" "$1" | grep -vP '\!\[' | grep -oP '\]\(\K[^\)]+(?=\))' > "urls.txt"

## Fusiona los enlaces y las URLs
paste -d ' ' links.txt urls.txt

## Limpia los archivos temporales
rm links.txt urls.txt
  1. Guarda el archivo.

Prueba el script getlink.sh

En este paso, probarás el script getlink.sh ejecutándolo con un archivo Markdown como argumento.

  1. En el mismo directorio que el script getlink.sh hay un archivo Markdown llamado labex_lab1.md. Este archivo contiene lo siguiente:
Use the course categories and tags on the [course](https://labex.io/courses/) page to filter and search for courses
  1. Ejecuta el script getlink.sh con el archivo labex_lab1.md como argumento:
./getlink.sh labex_lab1.md
  1. El script debe mostrar la siguiente salida:
curso https://labex.io/cursos/

Esta salida muestra que el script ha extraído con éxito la información de enlace del archivo Markdown.

Entiende el script getlink.sh

En este paso, entenderás el código del script getlink.sh.

El script realiza las siguientes tareas:

  1. Extrae el texto del enlace: El primer comando grep extrae el texto del enlace del archivo Markdown y lo guarda en un archivo temporal llamado links.txt. El comando grep -E "\[.*\]\(.+\)" coincide con el formato de enlace Markdown [texto](url), y el comando grep -vP '\!\[' excluye los enlaces de imágenes.
  2. Extrae las URLs de los enlaces: El segundo comando grep extrae las URLs de los enlaces del archivo Markdown y las guarda en un archivo temporal llamado urls.txt. El comando grep -oP '\]\(\K[^\)]+(?=\))' captura la parte de la URL del formato de enlace Markdown.
  3. Fusiona el texto del enlace y las URLs: El comando paste -d ' ' links.txt urls.txt fusiona el texto del enlace y las URLs de los archivos temporales, separándolos con un espacio.
  4. Limpia los archivos temporales: El comando rm links.txt urls.txt elimina los archivos temporales creados durante la ejecución del script.

Al entender la lógica del script, puedes modificar o ampliarlo para adaptarlo a tus necesidades específicas, como manejar diferentes tipos de enlaces o realizar un procesamiento adicional en la información extraída.

✨ Revisar Solución y Practicar

Resumen

¡Felicidades! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.