私はDebian 9を使用しています。 Bashでは、echo {a..z}
アルファベットを入力したり、echo {a..z}{a..z}
文字の組み合わせを印刷したりできます。しかし、インデックスを作成したいと思います。a b c d
待ってからインデックスが出るまで待ちますaa bb cc dd
(まで)。支柱の拡張や他の同様の方法でこれを行うにはどうすればよいですか?ありがとうaaa bbb ccc ddd
aaaaa bbbbb
zzzzz
答え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
bash
AFAIK拡張魔法だけではこれを行うことはできません。しかし、いつでも使用できます。
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"
- に最初のグループを追加します
index
。 - 残りの4セットを4回繰り返します。
for
各文字に対してループを実行します。case
ループ内のステートメントは、for
インデックスに追加される各文字のインスタンス数を決定します。