Введение
В этом проекте вы научитесь извлекать информацию о ссылках из Markdown-документов с использованием Bash-скрипта. Это распространенная задача в软件开发,где разработчики должны обрабатывать и извлекать конкретную информацию из текстовых документов.
👀 Предварительный просмотр
$./getlink.sh labex_lab1.md
course https://labex.io/courses/
🎯 Задачи
В этом проекте вы научитесь:
- Создавать Bash-скрипт для извлечения текста ссылки и URL-адресов из Markdown-документа
- Использовать регулярные выражения и командные инструменты, такие как
grepиpaste, для обработки текстовых данных - Дать скрипту возможность выполняться и запускать его с аргументами командной строки
🏆 Достижения
После завершения этого проекта вы сможете:
- Разрабатывать Bash-скрипт, который может извлекать информацию о ссылках из Markdown-документов
- Разбираться в логике и реализации скрипта, включая использование регулярных выражений и общих командных инструментов
- Применять навыки, полученные в этом проекте, к другим задачам обработки текста в своей软件开发 работе
Создайте скрипт getlink.sh
В этом шаге вы создадите скрипт getlink.sh, который может извлечь все ссылки из Markdown-документа.
- Откройте текстовый редактор и создайте новый файл с именем
getlink.sh. - Добавьте в файл следующий код:
#!/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
- Сохраните файл.
Тестируйте скрипт getlink.sh
В этом шаге вы будете тестировать скрипт getlink.sh, запуская его с Markdown-файлом в качестве аргумента.
- В той же директории, где находится скрипт
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
- Запустите скрипт
getlink.shс файломlabex_lab1.mdв качестве аргумента:
./getlink.sh labex_lab1.md
- Скрипт должен вывести следующее:
course https://labex.io/courses/
Это вывод показывает, что скрипт успешно извлек информацию о ссылке из Markdown-файла.
Разберитесь с скриптом getlink.sh
В этом шаге вы будете разбираться в коде скрипта getlink.sh.
Скрипт выполняет следующие задачи:
- Извлечение текста ссылки: Первая команда
grepизвлекает текст ссылки из Markdown-файла и сохраняет его в временный файл с именемlinks.txt. Командаgrep -E "\[.*\]\(.+\)"соответствует формату Markdown-ссылки[text](url), а командаgrep -vP '\!\['исключает ссылки на изображения. - Извлечение URL-адресов ссылки: Вторая команда
grepизвлекает URL-адреса ссылок из Markdown-файла и сохраняет их в временный файл с именемurls.txt. Командаgrep -oP '\]\(\K[^\)]+(?=\))'извлекает часть URL-адреса из формата Markdown-ссылки. - Объединение текста ссылки и URL-адресов: Команда
paste -d ' ' links.txt urls.txtобъединяет текст ссылки и URL-адреса из временных файлов, разделяя их пробелом. - Очистка временных файлов: Команда
rm links.txt urls.txtудаляет временные файлы, созданные во время выполнения скрипта.
Разбирая логику скрипта, вы можете модифицировать или расширять его, чтобы соответствовать вашим конкретным потребностям, например, обрабатывать разные типы ссылок или выполнять дополнительную обработку извлеченной информации.
Резюме
Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.



