Linuxループで1文字より長い一連の文字と数字を繰り返すことは可能ですか?

Linuxループで1文字より長い一連の文字と数字を繰り返すことは可能ですか?

Linuxで1より長い一連の文字または数字を繰り返すことは可能ですか?

AAA,AAB...ZZY,ZZZ例:000...999または 0 を保持

私はあなたがこれを行うことができることを理解しています:

for letter in {a..z}

ただし、法的にさらに文字を追加することはできません。トリプルネストループなしでこれを行う方法はありますか?

答え1

for string in {A..Z}{A..Z}{A..Z}; do
    # use "$string" here
done

このループは17576回(26×26×26回)繰り返されます。

000との間の両方がゼロで埋められた数字を作成するには、999バージョン4以降で使用できます。{000..999}bash

以前のバージョンでは、bash上記のループと同じ手法を使用できます。

または、次のものを使用できます。

for number in {0..999}; do
    printf -v znumber '%.3d' "$number"

    # use "$znumber" here
done

ここでは、整数を3つの位置まで明示的に埋める形式znumberで生成されます。printf$number

答え2

2 つの拡張をさらに作成します。

$ printf "%s\n" {a..z}{a..z}{a..z} | head -n 5
aaa
aab
aac
aad
aae
$ printf "%s\n" {a..z}{a..z}{a..z} | tail -n 5
zzv
zzw
zzx
zzy
zzz

Bashは数字のパディング拡張をサポートしています。

$ printf "%s\n" {000..999}  | head -n 5
000
001
002
003
004

関連情報