Skip to content

Instantly share code, notes, and snippets.

@msr-i386
Last active December 20, 2016 02:40
Show Gist options
  • Save msr-i386/3512ec10ee48d5b275e63b2796ad8603 to your computer and use it in GitHub Desktop.
Save msr-i386/3512ec10ee48d5b275e63b2796ad8603 to your computer and use it in GitHub Desktop.
echo 突然のワンライナーEx | awk '{for(i=1;i<=length();i++){len+=(substr($0,i,1)~/[\x01-\x7E]/)?1:2}for(i=0;i<len/2+2;i++){up=up "人";dn=dn "Y^"}printf("_%s_\n> %s <\n ̄%s ̄\n",up,$0,dn)}'
@msr-i386
Copy link
Author

解説

  1. 半角1文字を1、全角1文字を2とみなした文字数を取得
    1文字ずつ順に取り出し、文字がUTF-8で1バイト文字である場合は1、それ以外は2とすればよい。
    UTF-8で1バイト文字かどうかは、文字のバイト列のうち0x01~0x7eが含まれているかどうかで判定する。
  2. 上部の「人」、下部の「Y^」を1.で取得した文字数に応じて増やす
    これらは全角換算で1文字なので、1.で取得した文字数の半分と両端の余白(半角換算2文字)の合計数分増やしていく。
  3. 整形
    printfを使用して整形。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment