从文本中提取链接信息

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个项目中,你将学习如何使用Bash脚本从Markdown文档中提取链接信息。这是软件开发中的一项常见任务,开发人员需要从基于文本的文档中处理和提取特定信息。

👀 预览

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

🎯 任务

在这个项目中,你将学习:

  • 如何创建一个Bash脚本,从Markdown文档中提取链接文本和URL
  • 如何使用正则表达式和诸如greppaste等命令行工具来处理文本数据
  • 如何使脚本可执行并使用命令行参数运行它

🏆 成果

完成这个项目后,你将能够:

  • 开发一个可以从Markdown文档中提取链接信息的Bash脚本
  • 理解脚本的逻辑和实现,包括正则表达式和常见命令行工具的使用
  • 将在这个项目中学到的技能应用到软件开发工作中的其他文本处理任务中

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{{"`从文本中提取链接信息`"}} linux/grep -.-> lab-301471{{"`从文本中提取链接信息`"}} linux/sed -.-> lab-301471{{"`从文本中提取链接信息`"}} linux/paste -.-> lab-301471{{"`从文本中提取链接信息`"}} end

创建 getlink.sh 脚本

在这一步中,你将创建一个能够从Markdown文档中提取所有链接的 getlink.sh 脚本。

  1. 打开一个文本编辑器,创建一个名为 getlink.sh 的新文件。
  2. 将以下代码添加到该文件中:
#!/bin/bash

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

## 合并链接和URL
paste -d' 'links.txt urls.txt

## 清理临时文件
rm links.txt urls.txt
  1. 保存文件。

测试 getlink.sh 脚本

在这一步中,你将通过使用一个Markdown文件作为参数来运行 getlink.sh 脚本来测试它。

  1. 在与 getlink.sh 脚本相同的目录下,有一个名为 labex_lab1.md 的Markdown文件。该文件包含以下内容:
Use the course categories and tags on the [course](https://labex.io/courses/) page to filter and search for courses
  1. 使用 labex_lab1.md 文件作为参数运行 getlink.sh 脚本:
./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 命令从Markdown文件中提取链接URL,并将它们保存到一个名为 urls.txt 的临时文件中。grep -oP '\]\(\K[^\)]+(?=\))' 命令捕获Markdown链接格式的URL部分。
  3. 合并链接文本和URLpaste -d' 'links.txt urls.txt 命令合并临时文件中的链接文本和URL,并用空格分隔它们。
  4. 清理临时文件rm links.txt urls.txt 命令删除脚本执行过程中创建的临时文件。

通过理解脚本的逻辑,你可以根据自己的特定需求对其进行修改或扩展,例如处理不同类型的链接或对提取的信息进行额外的处理。

✨ 查看解决方案并练习

总结

恭喜你!你已经完成了这个项目。你可以在LabEx中练习更多实验来提升你的技能。

您可能感兴趣的其他 Linux 教程