🖋️

小説用に行頭下げするシェルスクリプト

2023/05/17に公開

小説用に行頭下げするシェルスクリプト

https://gist.github.com/nekomimi-daimao/711d3a3d8b3331eb33db80592dce9c92

タイトルの通り、小説用にファイルを上書きして行頭下げをするシェルスクリプトです。
Github Actionsで行頭下げがしたい!」という既知の宇宙でわたしぐらいにしかなさそうな需要のために作りました。

使い方
sh indenter.sh target.txt
target.txt
あいうえお。
かきくけこ。さしすせそ。
「たちつてと」

なにぬねの。

ディレクトリまるごと
#!/bin/bash
files=$(find /your/directory -maxdepth 1 -type f)
for file in $files; do
  sh indenter.sh "$file"
done

青空文庫を使って手元でいくつか確認しましたが、20万字くらいが複数あってもさくっと終わっていました。
ファイルを上書きするのでバックアップを取ってから実行してください。

制限

  • UTF-8/LFにのみ対応
  • ファイルの最後に改行が必要[1]

感想

なんかいけてねぇな……? という気はするんですがシェルスクリプトって正解がわからないんですよね。
文章を全文メモリ上に展開しちゃってますが、ログとかと違って行頭下げが必要なテキストってそこまでファイルサイズが膨れ上がることはないので大丈夫かなと思ってます。

おしまい。

参考

調べた既存サービス

https://tate-ala-arc.com/apps/mr-jisage.htm

まさにこれが欲しいんだけどディレクトリ内のテキストを一括で修正したいので使えず。

https://github.com/8amjp/novel-builder

いたれりつくせりだがnodeのRuntime入れるのはしんどい。

情報元

https://stackoverflow.com/questions/3685970/check-if-a-bash-array-contains-a-value
https://qiita.com/Jazuma/items/0bd013b3981cd04a5319
https://qiita.com/ko1nksm/items/af780da4a8ef8b1c5beb
https://orebibou.com/ja/home/201602/20160228_001/
http://raining.bear-life.com/linux/出力結果やテキストをファイルに書き出す方法
https://tiratom.hatenablog.com/entry/2019/11/15/shellスクリプトでフォルダ内のテキストファイルを
https://orebibou.com/ja/home/201606/20160623_002/

脚注
  1. sedがやめてって言ってるのに改行じゃなくても最終行吹っ飛ばす!!!sed!!!!いつも言うこと聞かない!!!! ↩︎

Discussion