はじめに
はてなブログの記事はneovim
を使ってMarkdown形式で書いている。
文の途中で改行したい場合、ただ改行するだけではダメで、
行末に2つの半角スペースをつけなければならない。
めんどい。
シェルスクリプトでやってみよう。
やってみた
やってること
変数NEWLINE
に追加する半角スペース2つをセット。
改行したい対象となる行を最初から絞ろうとするのは難しいので、
一旦全行に半角スペースを追加した後に、非対象行から追加した半角スペースを各個撃破する。
非対象行は以下。
- 既に半角スペースが末尾に2つついていた行
- 空行
- Markdownの特殊文字(
#
>
|
[
-
数字.
)で始まる行 ```
で囲まれている行[
〜]
で囲まれている行- 次の行が空行の行(段落最後の行想定)
- サニタイズ済み(記事中に
>
が使われていないこと)が前提 - 段落末尾の改行追加が気にならないなら末尾3行の処理は消してOK
- サニタイズ済み(記事中に
簡単にサニタイズしたいなら下の処理を今回のコードの前段に突っ込めば良いかと。
sed 's/&/\&/g' \ | sed 's/"/\"/g' \ | sed "s/'/\'/g" \ | sed 's/</\</g' \ | sed 's/>/\>/g'
さいごに
以前こちらの記事で作ったシェルスクリプトには反映した。
確認環境
PC | Thinkpad X1 Carbon 2nd Gen |
OS | FreeBSD 12.1-RELEASE-p1 |