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

ふと思いつきでそんな処理を書いてたので、念のため備忘で残しておく。
以下のように、一度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[.:])'

 


Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

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

*