キーワードリストからMarkdownのアンカーコードを生成する
自動化。
成果物
キーワード
元となるキーワードは以下コマンドで取得する。
sqlite3 :memory: "pragma pragma_list;"
キーワード一覧
application_id auto_vacuum automatic_index busy_timeout cache_size cache_spill case_sensitive_like cell_size_check checkpoint_fullfsync collation_list compile_options count_changes data_version database_list default_cache_size defer_foreign_keys empty_result_callbacks encoding foreign_key_check foreign_key_list foreign_keys freelist_count full_column_names fullfsync function_list ignore_check_constraints incremental_vacuum index_info index_list index_xinfo integrity_check journal_mode journal_size_limit legacy_alter_table legacy_file_format locking_mode max_page_count mmap_size module_list optimize page_count page_size pragma_list query_only quick_check read_uncommitted recursive_triggers reverse_unordered_selects schema_version secure_delete short_column_names shrink_memory soft_heap_limit synchronous table_info table_xinfo temp_store temp_store_directory threads user_version wal_autocheckpoint wal_checkpoint writable_schema
これを元にしてMarkdownのアンカーコードを作成する。
Markdownアンカー
* [キーワード](#キーワード)
<a name="キーワード"></a>
## [キーワード](#キーワード)
* [キーワード](#キーワード)
vim
vim pragmas.txt
以下のvimコマンドを打つ。
:%s/\v^(\w+)$/* [\1](#\1)/g
sed
cp pragmas.txt pragmas_1.txt sed -r -i.bak "s/^(\w+)$/* [\1](#\1)/g" pragmas_1.txt
<a name="キーワード"></a>
vim
vim pragmas.txt
以下のvimコマンドを打つ。
:%s/\v^(\w+)$/<a name="\1"><\/a>/g
sed
cp pragmas.txt pragmas_2.txt sed -r -i.bak "s/^(\w+)$/<a name=\"\1\"><\/a>/g" pragmas_2.txt
## [キーワード](#キーワード)
vim
vim pragmas.txt
以下のvimコマンドを打つ。
:%s/\v^(\w+)$/## [\1](#\1)/g
sed
cp pragmas.txt pragmas_3.txt sed -r -i.bak "s/^(\w+)$/## [\1](#\1)/g" pragmas_3.txt
ファイル結合
以下の2つを連結したい。
<a name="キーワード"></a>
## [キーワード](#キーワード)
以下で2ファイルを交互に出力する。
paste -d'\n' pragmas_2.txt pragmas_3.txt > pragmas_4.txt
これで以下の連続がキーワード分だけできた。
<a name="キーワード"></a> ## [キーワード](#キーワード)
問題
単語間にスペースが含まれていると機能しない。スペースを_
に置換してアンカーにしたい。
でも、どうやって実現できるかわからない。スペースを含めるだけなら(\w+)
を([\w\s]+)
にすればいいだけだろう。それで以下のようになるはず。
* [key word](#key word)
以下までならできそう。行全体を同じように置換すればいいだけだから。
* [key-word](#key-word)
でも、以下のようにする方法がわからない。([\w\s]+)
で行の2箇所にヒットするのに、そのうちの1箇所のスペースだけは-
に置換したい。そもそも、そんなことできるのか? スペースの数が固定なら後方参照を使えそうだが、不定だから無理だし。
* [key word](#key-word)
所感
さらなる要求として、以下のような複数行に渡ったものを量産したい。これは次回やる。
<a name="キーワード"></a> ## [キーワード](#キーワード) \`\`\`sql pragma キーワード; pragma キーワード = 真偽値; \`\`\`
参考
- https://orebibou.com/2017/10/linuxunix%E3%81%A7%E3%83%AF%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%8A%E3%83%BC%E3%81%A7%E8%A4%87%E6%95%B0%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E8%A1%8C%E3%82%92%E4%BA%A4%E4%BA%92%E3%81%AB%E5%87%BA/
- https://qiita.com/laqiiz/items/baa87183838351e4778c
対象環境
- 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
前回まで
- SQLite3学習 俯瞰まとめ
- SQLite3学習 環境構築まとめ
- SQLite3学習 インタフェースまとめ(C言語、CLI、対話モード、Tcl...)
- SQLite3学習 ドットコマンドまとめ
- SQLite3学習 JSON拡張まとめ
- SQLite3学習 FTSまとめ(ICU, MeCab)
- SQLite3学習 再帰クエリ(WITH RECURSIVE)
- SQLite3学習 R-Treeモジュール
- SQLite3学習 Geopoly(2次元ベクタ画像の生成)
- SQLite3学習 拡張関数(generate_series)
- SQLite3学習 拡張ライブラリ数学関数(extension-functions.c)
- SQLite3学習 謎と名前
- SQL文の分類(DDL,DML,TCL,DCL)
- SQL構文 alter(rename)
- SQL構文 alter(add column)概要
- SQL構文 alter(add column)制約
- SQL構文 alter(add column)sqlite_master変更しても反映されない
- SQL構文 alter(add column)スキーマ再定義(テーブル再作成による定義変更)
- SQL構文 analyze
- SQL構文 attach/detach
- SQLite3構文 begin,end,commit,rollback,savepoint(deferred,immediate,exclusive)
- SQLite3構文 コメント
- SQLite3構文 create/drop
- SQLite3構文 index(create/drop)
- SQLite3構文 table(create/drop)
- SQLite3構文 列制約(default)
- SQLite3構文 列制約(collate)
- SQLite3構文 列制約(primary key)
- SQLite3構文 列制約(primary key)ベストプラクティス
- SQLite3構文 列制約(unique)
- SQLite3構文 列制約(not null)
- SQLite3構文 列制約(check)
- SQLite3構文 列制約(foreign key references)
- SQLite3構文 表制約(primary key, unique, check, foreign key)
- SQLite3でメタデータを取得する方法(DB名(スキーマ名)、テーブル名、列名、制約)
- SQLite3でTEMPの保存先を指定する
- SQLite3構文 delete
- SQLite3ビルド失敗(SQLITE_ENABLE_UPDATE_DELETE_LIMIT)
- SQLite3をソースからビルドする(SQLITE_ENABLE_UPDATE_DELETE_LIMIT)
- SQLite3構文 delete(limit offset, order by)
- SQLite3クエリプランニング(インデックスの働き)
- SQLite3構文 explain
- SQLite構文 expression
- SQLite構文 expression(リテラル)
- SQLite構文 expression(パラメータ)
- SQLite構文 expression(演算子)
- SQLite構文 expression(like 句)
- SQLite構文 expression(glob 句)
- SQLite構文 expression(regexp 句)
- SQLite構文 expression(match 句)
- SQLite構文 expression(is 句)
- SQLite構文 expression(in 句)
- SQLite構文 expression(between 句)
- SQLite構文 expression(case 句)
- SQLite構文 expression(exists 句)
- SQLite構文 expression(サブクエリ)
- SQLite構文 expression(cast)
- SQLite構文 indexed by
- SQLite構文 insert
- SQLite構文 pragma