반복되는 문자로 알파벳순 색인 만들기

반복되는 문자로 알파벳순 색인 만들기

저는 데비안 9를 사용하고 있습니다. Bash에서는 echo {a..z}알파벳을 입력하거나 echo {a..z}{a..z}문자 조합을 인쇄할 수 있습니다. 그러나 인덱스를 생성하고 싶습니다. a b c d기다렸다가 인덱스 가 나올 때까지 기다립니다 aa bb cc dd( 까지 ). 버팀대 확장 또는 기타 유사한 방법을 통해 이를 수행하려면 어떻게 해야 합니까? 감사해요aaa bbb ccc dddaaaaa bbbbbzzzzz

답변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

bashAFAIK 확장된 마법만으로는 이 작업을 수행 할 수 없습니다 . 하지만 언제든지 사용할 수 있어요

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"
  1. 에 첫 번째 그룹을 추가합니다 index.
  2. 나머지 4세트를 4회 반복합니다.
  3. for각 문자에 대해 루프를 실행합니다.
  4. case루프의 명령문은 for색인에 추가되는 각 문자의 인스턴스 수를 결정합니다.

관련 정보