Extraktion von Linkinformationen aus Text

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Projekt lernst du, wie du Linkinformationen aus Markdown-Dokumenten mit einem Bash-Skript extrahierst. Dies ist eine häufige Aufgabe in der Softwareentwicklung, bei der Entwickler spezifische Informationen aus textbasierten Dokumenten verarbeiten und extrahieren müssen.

👀 Vorschau

$./getlink.sh labex_lab1.md
course https://labex.io/courses/

🎯 Aufgaben

In diesem Projekt wirst du lernen:

  • Wie du ein Bash-Skript erstellst, um Linktexte und URLs aus einem Markdown-Dokument zu extrahieren
  • Wie du reguläre Ausdrücke und Befehlszeilentools wie grep und paste verwendest, um Text-Daten zu verarbeiten
  • Wie du ein Skript ausführbar machst und es mit Befehlszeilenargumenten ausführst

🏆 Errungenschaften

Nach Abschluss dieses Projekts wirst du in der Lage sein:

  • Ein Bash-Skript zu entwickeln, das Linkinformationen aus Markdown-Dokumenten extrahieren kann
  • Die Logik und Implementierung des Skripts zu verstehen, einschließlich der Verwendung von regulären Ausdrücken und üblichen Befehlszeilentools
  • Die in diesem Projekt erlernten Fähigkeiten auf andere Textverarbeitungstasks in deiner Softwareentwicklungstätigkeit anzuwenden

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{{"Extraktion von Linkinformationen aus Text"}} linux/grep -.-> lab-301471{{"Extraktion von Linkinformationen aus Text"}} linux/sed -.-> lab-301471{{"Extraktion von Linkinformationen aus Text"}} linux/paste -.-> lab-301471{{"Extraktion von Linkinformationen aus Text"}} end

Erstellen des Skripts getlink.sh

In diesem Schritt wirst du das Skript getlink.sh erstellen, das alle Links aus einem Markdown-Dokument extrahieren kann.

  1. Öffne einen Texteditor und erstelle eine neue Datei namens getlink.sh.
  2. Füge den folgenden Code zur Datei hinzu:
#!/bin/bash

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

## Merge links and URLs
paste -d ' ' links.txt urls.txt

## Clean up temporary files
rm links.txt urls.txt
  1. Speichere die Datei.

Testen des Skripts getlink.sh

In diesem Schritt wirst du das Skript getlink.sh testen, indem du es mit einer Markdown-Datei als Argument ausführst.

  1. Im selben Verzeichnis wie das Skript getlink.sh befindet sich eine Markdown-Datei namens labex_lab1.md. Diese Datei enthält Folgendes:
Use the course categories and tags on the [course](https://labex.io/courses/) page to filter and search for courses
  1. Führe das Skript getlink.sh mit der Datei labex_lab1.md als Argument aus:
./getlink.sh labex_lab1.md
  1. Das Skript sollte Folgendes ausgeben:
course https://labex.io/courses/

Dieser Output zeigt, dass das Skript die Linkinformationen erfolgreich aus der Markdown-Datei extrahiert hat.

Verständnis des Skripts getlink.sh

In diesem Schritt wirst du den Code im Skript getlink.sh verstehen.

Das Skript führt folgende Aufgaben aus:

  1. Extraktion von Linktext: Der erste grep-Befehl extrahiert den Linktext aus der Markdown-Datei und speichert ihn in einer temporären Datei namens links.txt. Der Befehl grep -E "\[.*\]\(.+\)" passt auf das Markdown-Linkformat [text](url) und der Befehl grep -vP '\!\[' exkludiert Bild-Links.
  2. Extraktion von Link-URLs: Der zweite grep-Befehl extrahiert die Link-URLs aus der Markdown-Datei und speichert sie in einer temporären Datei namens urls.txt. Der Befehl grep -oP '\]\(\K[^\)]+(?=\))' erfasst den URL-Teil des Markdown-Linkformats.
  3. Vereinigung von Linktext und URLs: Der Befehl paste -d ' ' links.txt urls.txt vereinigt den Linktext und die URLs aus den temporären Dateien, trennend sie mit einem Leerzeichen.
  4. Bereinigung von temporären Dateien: Der Befehl rm links.txt urls.txt entfernt die temporären Dateien, die während der Ausführung des Skripts erstellt wurden.

Indem du die Logik des Skripts verstehst, kannst du es modifizieren oder erweitern, um deine spezifischen Anforderungen zu erfüllen, wie z. B. das Handling von verschiedenen Linktypen oder die Durchführung zusätzlicher Verarbeitungen auf den extrahierten Informationen.

✨ Lösung prüfen und üben

Zusammenfassung

Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Labs absolvieren, um deine Fähigkeiten zu verbessern.