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