Извлечение информации о ссылках из текста

LinuxBeginner
Практиковаться сейчас

Введение

В этом проекте вы научитесь извлекать информацию о ссылках из Markdown-документов с использованием Bash-скрипта. Это распространенная задача в软件开发,где разработчики должны обрабатывать и извлекать конкретную информацию из текстовых документов.

👀 Предварительный просмотр

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

🎯 Задачи

В этом проекте вы научитесь:

  • Создавать Bash-скрипт для извлечения текста ссылки и URL-адресов из Markdown-документа
  • Использовать регулярные выражения и командные инструменты, такие как grep и paste, для обработки текстовых данных
  • Дать скрипту возможность выполняться и запускать его с аргументами командной строки

🏆 Достижения

После завершения этого проекта вы сможете:

  • Разрабатывать Bash-скрипт, который может извлекать информацию о ссылках из Markdown-документов
  • Разбираться в логике и реализации скрипта, включая использование регулярных выражений и общих командных инструментов
  • Применять навыки, полученные в этом проекте, к другим задачам обработки текста в своей软件开发 работе

Создайте скрипт getlink.sh

В этом шаге вы создадите скрипт getlink.sh, который может извлечь все ссылки из Markdown-документа.

  1. Откройте текстовый редактор и создайте новый файл с именем getlink.sh.
  2. Добавьте в файл следующий код:
#!/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. Сохраните файл.

Тестируйте скрипт getlink.sh

В этом шаге вы будете тестировать скрипт getlink.sh, запуская его с Markdown-файлом в качестве аргумента.

  1. В той же директории, где находится скрипт getlink.sh, есть Markdown-файл с именем labex_lab1.md. Этот файл содержит следующее:
Use the course categories and tags on the [course](https://labex.io/courses/) page to filter and search for courses
  1. Запустите скрипт getlink.sh с файлом labex_lab1.md в качестве аргумента:
./getlink.sh labex_lab1.md
  1. Скрипт должен вывести следующее:
course https://labex.io/courses/

Это вывод показывает, что скрипт успешно извлек информацию о ссылке из Markdown-файла.

Разберитесь с скриптом getlink.sh

В этом шаге вы будете разбираться в коде скрипта getlink.sh.

Скрипт выполняет следующие задачи:

  1. Извлечение текста ссылки: Первая команда grep извлекает текст ссылки из Markdown-файла и сохраняет его в временный файл с именем links.txt. Команда grep -E "\[.*\]\(.+\)" соответствует формату Markdown-ссылки [text](url), а команда grep -vP '\!\[' исключает ссылки на изображения.
  2. Извлечение URL-адресов ссылки: Вторая команда grep извлекает URL-адреса ссылок из Markdown-файла и сохраняет их в временный файл с именем urls.txt. Команда grep -oP '\]\(\K[^\)]+(?=\))' извлекает часть URL-адреса из формата Markdown-ссылки.
  3. Объединение текста ссылки и URL-адресов: Команда paste -d ' ' links.txt urls.txt объединяет текст ссылки и URL-адреса из временных файлов, разделяя их пробелом.
  4. Очистка временных файлов: Команда rm links.txt urls.txt удаляет временные файлы, созданные во время выполнения скрипта.

Разбирая логику скрипта, вы можете модифицировать или расширять его, чтобы соответствовать вашим конкретным потребностям, например, обрабатывать разные типы ссылок или выполнять дополнительную обработку извлеченной информации.

Резюме

Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.

✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться