Linuxコマンドだけを使って。目次と見出しをつくる。
成果物
input
A B C
output
* [A](#A) * [B](#B) * [C](#C) <a name="A"></a> ## [A](#A) <a name="B"></a> ## [B](#B) <a name="C"></a> ## [C](#C)
目次(TOC(table of contents))と見出しをつくる。
前回まで
- キーワードリストからMarkdownのアンカーコードを生成する
- キーワードリストとテンプレートからMarkdownのアンカー+pre+codeコードを生成する
- キーワードリストとテンプレートからMarkdownのアンカーを生成する
mkmdh.sh
キーワード一覧からMarkdownのアンカー一覧を作成する。
# $1: キーワードリスト # 結果: * [キーワード](#キーワード) _mklist() { echo "$1" | sed -r "s/^(\w+)$/* [\1](#\1)/g"; } # $1: キーワードリスト # 結果: <a name="キーワード"></a> _mkanchor() { echo "$1" | sed -r "s/^(\w+)$/<a name=\"\1\"><\/a>/g"; } # $1: キーワードリスト # 結果: ## [キーワード](#キーワード) _mkh2() { echo "$1" | sed -r "s/^(\w+)$/## [\1](#\1)/g"; } # mkmdh # $1: キーワードリスト # 結果: markdownのアンカーを量産する # * [キーワード](#キーワード) # ... # <a name="キーワード"></a> # ## [キーワード](#キーワード) # ... run() { local list="`_mklist "$1"`" local anchor="`_mkanchor "$1"`" local h2="`_mkh2 "$1"`" local anch2="`paste -d'\n' <(echo "$anchor") <(echo "$h2")`" echo "$list" echo "$anch2" } run "`cat`"
run.sh
テスト実行コード。
SCRIPT_DIR=$(cd $(dirname $0); pwd) cd "$SCRIPT_DIR" echo -e "A\nB\nC" | ./mkmdh.sh
結果。OK!
* [A](#A) * [B](#B) * [C](#C) <a name="A"></a> ## [A](#A) <a name="B"></a> ## [B](#B) <a name="C"></a> ## [C](#C)
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13
- bash 4.4.12(1)-release
- SQLite 3.29.0
- MeCab 0.996ユーザ辞書
$ uname -a Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux