シェル芸で文字列のn個目の文字間に「.(ドット)」を挟んで連続表示させる
Pocket

ふと思いつきでそんな処理を書いてたので、念のため備忘で残しておく。
以下のように、一度readで変数に突っ込んでやって、その後は文字数を元にxargsで1個づつ処理してやればいい。

echo qwerty|(read x;seq 2 $(($(echo $x|wc -c)-1))|xargs -I@ bash -c "echo $x|sed 's/./.&/@'")
Sponsored Links

せっかくなので、@ebanさんのようにjqで解けないかなとやってみた。
苦戦はしたけど、なんとかできたので残しておく。jqコマンドでは「as $var」で変数に代入できて、かつパイプでそのまま次の処理にその内容を渡せるのでかなり短く書けるようだ。

echo qwerty|jq -Rr '. as$i|length|(range(1;.)|$i[:.]+"."+$i[.:])'

 

Pocket

Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

メールアドレスが公開されることはありません。

*