【シェルと遊ぼう】はてなブログのMarkdown形式で改行(半角スペース2つ)を追加してみる

はじめに

はてなブログの記事はneovimを使ってMarkdown形式で書いている。

文の途中で改行したい場合、ただ改行するだけではダメで、
行末に2つの半角スペースをつけなければならない。

めんどい。

シェルスクリプトでやってみよう。

やってみた

やってること

変数NEWLINEに追加する半角スペース2つをセット。

改行したい対象となる行を最初から絞ろうとするのは難しいので、
一旦全行に半角スペースを追加した後に、非対象行から追加した半角スペースを各個撃破する。

非対象行は以下。

  1. 既に半角スペースが末尾に2つついていた行
  2. 空行
  3. Markdownの特殊文字(# > | [ - 数字.)で始まる行
  4. ```で囲まれている行
  5. []で囲まれている行
  6. 次の行が空行の行(段落最後の行想定)
    • サニタイズ済み(記事中に>が使われていないこと)が前提
    • 段落末尾の改行追加が気にならないなら末尾3行の処理は消してOK

簡単にサニタイズしたいなら下の処理を今回のコードの前段に突っ込めば良いかと。

sed 's/&/\&/g'       \
| sed 's/"/\"/g'    \
| sed "s/'/\'/g"     \
| sed 's/</\&lt;/g'      \
| sed 's/>/\&gt;/g'

さいごに

以前こちらの記事作ったシェルスクリプトには反映した。

確認環境

   
PC Thinkpad X1 Carbon 2nd Gen
OS FreeBSD 12.1-RELEASE-p1

参考