bashやshellsciriptにおいて、文字列を1文字ずつに分解するとき、個人的にまず思いつくのはawkを利用する方法です。
echo 'helloworld' | awk -v FS='' '{
for (i = 1; i <= NF; i++) print $i;
}'
FS
はフィールドのセパレータを指定する組み込み変数であり、上記の例では空文字列を指定するで文字列を分解しています。上の例では分解してできた文字をそのまま標準出力に流していますが、__「その文字を利用して何らかの処理をしたい」__場合には、文字列操作にたけたawkを利用するのは大きな利点だと思います。
__文字列操作はとりあえずawkで何とかしたい派__のわたしとしては上の例で満足ですが、「文字列分解だけしたい。そのあとは別のコマンドに処理を流したい」というときにはややくどいのも事実。また__シェルスクリプト過激派の一部にはawkすら利用することをためらう/禁じる宗派も存在する__そうです。そういうときはfold
を利用しましょう。
echo 'helloworld' | fold -s1
fold
の存在を最近知ったのは内緒(´・ω・`)