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
과 사이가 모두 0으로 채워진 숫자를 만들려면 999
버전 4 이상에서 사용할 수 있습니다.{000..999}
bash
이전 버전에서는 bash
위의 루프와 동일한 기술을 사용할 수 있습니다.
또는 다음을 사용할 수 있습니다.
for number in {0..999}; do
printf -v znumber '%.3d' "$number"
# use "$znumber" here
done
여기서 는 정수를 세 위치까지 명시적으로 채우는 형식 znumber
으로 생성됩니다 .printf
$number
답변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