Linux 루프에서 한 문자보다 긴 일련의 문자와 숫자를 반복하는 것이 가능합니까?

Linux 루프에서 한 문자보다 긴 일련의 문자와 숫자를 반복하는 것이 가능합니까?

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

관련 정보