繰り返し文字でアルファベット順のインデックスを作成する

繰り返し文字でアルファベット順のインデックスを作成する

私はDebian 9を使用しています。 Bashでは、echo {a..z}アルファベットを入力したり、echo {a..z}{a..z}文字の組み合わせを印刷したりできます。しかし、インデックスを作成したいと思います。a b c d待ってからインデックスが出るまで待ちますaa bb cc dd(まで)。支柱の拡張や他の同様の方法でこれを行うにはどうすればよいですか?ありがとうaaa bbb ccc dddaaaaa bbbbbzzzzz

答え1

次のことができます。

$ printf '%s ' {a..z}; echo
a b c d e f g h i j k l m n o p q r s t u v w x y z

$ printf '%s%s ' {a..z}{,}; echo
aa bb cc dd ee ff gg hh ... ss tt uu vv ww xx yy zz 

$ printf '%s%s%s ' {a..z}{,,}
aaa bbb ccc ddd eee ... ttt uuu vvv www xxx yyy zzz

説明:中括弧拡張は、各カンマ(および先行文字列)で区切られた値のパラメーターを生成します。

$ echo A{d,u,j}
Ad Au Aj

ただし、値が空の場合、先頭の文字列だけが繰り返されます。

$ echo A{,,}
A A A

先行文字列自体が中括弧で拡張されると、すべての文字列が繰り返されます。

$ echo {one,two}{,,}
one one one two two two

次に、printf(および末尾のエコー)を使用して出力フォーマットを指定します。

$ printf '%s%s%s ' {one,two}{,,}; echo
oneoneone twotwotwo

文字値を使用してください。

$ printf '%s%s%s ' {a..d}{,,}; echo
aaa bbb ccc ddd

答え2

bashAFAIK拡張魔法だけではこれを行うことはできません。しかし、いつでも使用できます。

for c in {a..z}; do echo $c$c; done
for c in {a..z}; do echo $c$c$c; done
...

答え3

これはBashのもう一つのオプションです。

index=$(echo -n {a..z})
num=2
until ((num>5)); do
    for c in {a..z}; do
        case "$num" in
            2 ) index=$(echo -n "$index $c$c") ;;
            3 ) index=$(echo -n "$index $c$c$c") ;;
            4 ) index=$(echo -n "$index $c$c$c$c") ;;
            5 ) index=$(echo -n "$index $c$c$c$c$c") ;;
        esac
    done
((num++))
done
echo "$index"
  1. に最初のグループを追加しますindex
  2. 残りの4セットを4回繰り返します。
  3. for各文字に対してループを実行します。
  4. caseループ内のステートメントは、forインデックスに追加される各文字のインスタンス数を決定します。

関連情報