はじめに
このプロジェクトでは、Bash スクリプトを使って Markdown ドキュメントからリンク情報を抽出する方法を学びます。これはソフトウェア開発において一般的なタスクであり、開発者はテキストベースのドキュメントから特定の情報を処理して抽出する必要があるからです。
👀 プレビュー
$./getlink.sh labex_lab1.md
course https://labex.io/courses/
🎯 タスク
このプロジェクトでは、以下を学びます。
- Markdown ドキュメントからリンクテキストと URL を抽出するための Bash スクリプトを作成する方法
- 正規表現や
grepやpasteのようなコマンドラインツールを使ってテキストデータを処理する方法 - スクリプトを実行可能にする方法とコマンドライン引数で実行する方法
🏆 成果
このプロジェクトを完了すると、以下のことができるようになります。
- Markdown ドキュメントからリンク情報を抽出できる Bash スクリプトを開発すること
- 正規表現や一般的なコマンドラインツールの使用を含む、スクリプトのロジックと実装を理解すること
- このプロジェクトで学んだスキルをソフトウェア開発作業における他のテキスト処理タスクに適用すること
getlink.sh スクリプトを作成する
このステップでは、Markdown ドキュメントからすべてのリンクを抽出できる getlink.sh スクリプトを作成します。
- テキストエディタを開き、
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 スクリプトをテストする
このステップでは、Markdown ファイルを引数として getlink.sh スクリプトを実行することで、そのスクリプトをテストします。
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
labex_lab1.mdファイルを引数としてgetlink.shスクリプトを実行します。
./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 を抽出する:2 番目の
grepコマンドは、Markdown ファイルからリンク URL を抽出し、urls.txtという名前の一時ファイルに保存します。grep -oP '\]\(\K[^\)]+(?=\))'コマンドは Markdown のリンク形式の URL 部分をキャプチャします。 - リンクテキストと URL を結合する:
paste -d ' ' links.txt urls.txtコマンドは、一時ファイルからのリンクテキストと URL を結合し、それらをスペースで区切ります。 - 一時ファイルをクリーンアップする:
rm links.txt urls.txtコマンドは、スクリプトの実行中に作成された一時ファイルを削除します。
スクリプトのロジックを理解することで、特定のニーズに合わせてスクリプトを変更または拡張することができます。たとえば、異なる種類のリンクを処理したり、抽出された情報に対して追加の処理を行ったりすることができます。
まとめ
おめでとうございます!このプロジェクトを完了しました。実力を向上させるために、LabEx でさらに多くの実験を行って練習してください。



