テキストからのリンク情報の抽出

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このプロジェクトでは、Bash スクリプトを使って Markdown ドキュメントからリンク情報を抽出する方法を学びます。これはソフトウェア開発において一般的なタスクであり、開発者はテキストベースのドキュメントから特定の情報を処理して抽出する必要があるからです。

👀 プレビュー

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

🎯 タスク

このプロジェクトでは、以下を学びます。

  • Markdown ドキュメントからリンクテキストと URL を抽出するための Bash スクリプトを作成する方法
  • 正規表現や 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

## 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 スクリプトをテストする

このステップでは、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を抽出する:2番目の grep コマンドは、Markdown ファイルからリンクURLを抽出し、urls.txt という名前の一時ファイルに保存します。grep -oP '\]\(\K[^\)]+(?=\))' コマンドは Markdown のリンク形式のURL部分をキャプチャします。
  3. リンクテキストとURLを結合するpaste -d ' ' links.txt urls.txt コマンドは、一時ファイルからのリンクテキストとURLを結合し、それらをスペースで区切ります。
  4. 一時ファイルをクリーンアップするrm links.txt urls.txt コマンドは、スクリプトの実行中に作成された一時ファイルを削除します。

スクリプトのロジックを理解することで、特定のニーズに合わせてスクリプトを変更または拡張することができます。たとえば、異なる種類のリンクを処理したり、抽出された情報に対して追加の処理を行ったりすることができます。

✨ 解答を確認して練習

まとめ

おめでとうございます!このプロジェクトを完了しました。実力を向上させるために、LabExでさらに多くの実験を行って練習してください。