節約テクノロジ >

日本語UTF8文字列を禁則処理付きfoldで折りたたむ方法


最近の環境ではlinux/unix/MacOSのfoldコマンドもUTF8に対応していますが、句点や括弧のぶら下げや追い出しをしてくれません。ここでは日本語禁則処理をするjfoldを紹介します。

目次

  1. jfold - 句点や括弧のぶら下げや追い出しの禁則処理に対応したfold(node.js版)
  2. Bash版
  3. 備考
  4. コメント

jfold - 句点や括弧のぶら下げや追い出しの禁則処理に対応したfold(node.js版)

句点や括弧のぶら下げや追い出しの禁則処理に対応したfoldです。指定文字数(デフォルト20)毎に改行を入れます。

$ cat test.txt
いろはにほへとちりぬるをわがよたれそつね」ならんういのおくけまけふこえてあさきゆめみしえひもせすん

$ cat test.test | jfold > result.txt
$ cat result.txt
いろはにほへとちりぬるをわがよたれそつね」
ならんういのおくけまけふこえてあさきゆめ
みしえひもせすん
いろはにほへとちりぬるをわがよたれそつ
「ねならんういのおくけまけふこえてあさき
ゆめみしえひもせすん

インストールl

npm install -g jfold

コマンドライン

        jfold [-w <文字数> ] 

オプション

 -h                 ヘルプ
 -d                 デバッグモード
 -w: <文字数> 折り返す文字数(例 -w 30)

Change Log

Bash版

bash関数板

以下をコピーしてbash_profileにペーストします。

jfold(){ AC=$# AG=$1 perl -CS -ne 'use utf8;BEGIN{if($ENV{"AC"}>0){$f=$ENV{"AG"}}else{$f=20};$f*=2;}@b=split(//,$_);$i=0;while($c=shift(@b)){print $c;$i++;if(!($c=~/\p{ascii}/)){$i++;}if(($i>=($f-1) && !($b[0]=~/[,\)\])}、〕〉》」』】〙〗〟ゝゞーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖ‐゠–〜~\?!‼⁇⁈⁉・:;\/ㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇷ゚ㇺㇻㇼㇽㇾㇿ々〻’”⦆»。.]/))||($b[0]=~/[(\([{〔〈《「『【〘〖〝‘“⦅«]/&&$i>=($f-3))){print "\n";$i=0;}}'; }

bashスクリプト板

以下をコピーしてターミナルにペーストするとjfoldという実行ファイルが出来るので、PATHが通った場所にコピーします。

cat <<'EOF' >jfold
AC=$# AG=$1 perl -CS -ne 'use utf8;BEGIN{if($ENV{"AC"}>0){$f=$ENV{"AG"}}else{$f=20};$f*=2;}@b=split(//,$_);$i=0;while($c=shift(@b)){print $c;$i++;if(!($c=~/\p{ascii}/)){$i++;}if(($i>=($f-1) && !($b[0]=~/[,\)\])}、〕〉》」』】〙〗〟ゝゞーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖ‐゠–〜~\?!‼⁇⁈⁉・:;\/ㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇷ゚ㇺㇻㇼㇽㇾㇿ々〻’”⦆»。.]/))||($b[0]=~/[(\([{〔〈《「『【〘〖〝‘“⦅«]/&&$i>=($f-3))){print "\n";$i=0;}}'; 
EOF
chmod +x jfold
#

使用例

下記は全角10文字で折り返しています。数値を変えることで好きな数で折り返します。半角2文字で全角1文字と数えています。

> cat test.txt |jfold 10

最近の環境では「linu
x/unix/MacOS」の【fo
ld】コマンドも『UTF8』
に対応していますが、
句点や括弧のぶら下げ、
追い出しをしてくれま
せん。ここでは日本語
の禁則の処理をする
(jfold)を紹介します。

備考

禁則処理の文字はWikipediaの禁則処理の記事の記号を使用しています。もし自分で追加する場合はbashスクリプトの括弧の集まりの箇所に追加してお使いください。

jfoldの数値を省略した場合のデフォルトは20文字となります。

perlが古いと動かないと思います。

この記事を見た人がよく読んでいる記事

節約テクノロジ >

コメント

トップページ

節約テクノロジ > 日本語UTF8文字列を禁則処理付きfoldで折りたたむ方法