0의 개수를 기준으로 숫자를 증가시킵니다.

0의 개수를 기준으로 숫자를 증가시킵니다.

"1234567890"length 까지의 반복으로 구성된 문자열을 원합니다 72. 0이 아닌 숫자를 포함하는 동일한 길이의 또 다른 문자열입니다. 숫자 0 대신 처음부터 숫자가 증가하는 것을 얻습니다 1.

그래서 문자열의 경우

"1234567890123456789012345678901234567890"

다음과 같은 인쇄 결과를 얻습니다.

         1         2         3         4
1234567890123456789012345678901234567890

나는 이것을 끝까지 하고 싶다.72

이미 공백으로 0이 아닌 값을 제거하기 시작했지만 해당 위치에서 인덱스를 늘리는 것이 0실제 문제입니다.

  wz="1234567890"  # Basic measure of ten
  hg="${wz}${wz}${wz}${wz}${wz}${wz}${wz}12"
  
  ha=${hg//[123456789]/" "}

  printf '%s\n' "$ha"
  printf '%s\n' "$hg"

답변1

이 함수는 필요한 반복(최대 200자)을 수행한 다음 인수에 따라 이를 자릅니다.

#! /bin/bash

Ruler () {  # (lth)

    local Tens Digs j

    printf -v Tens '%10d' {1..20}
    for (( j = 1; j <= 20; j++)); do Digs="${Digs}1234567890"; done
    printf '%s\n%s\n' "${Tens:0:${1}}" "${Digs:0:${1}}"
}

    Ruler 72
    Ruler 32

이와 같이:

$ ./Hdsup
         1         2         3         4         5         6         7  
123456789012345678901234567890123456789012345678901234567890123456789012
         1         2         3  
12345678901234567890123456789012

답변2

다음 awk프로그램은 각각 일련의 숫자로 구성된 두 개의 "눈금자"를 생성합니다. 이것두번째행에는 숫자 사이에 공백이 없이 1부터 10까지(10을 0으로 대체) 번호가 지정됩니다. 첫 번째 행에도 비슷하게 번호가 매겨져 있지만 각 번호 사이에 약간의 공백이 있습니다.

프로그램은 두 개의 선택적 명령줄 매개변수를 사용합니다. 첫 번째 인수는 두 번째 눈금자의 전체 너비(기본값은 80)이고, 두 번째 인수는 첫 번째 눈금자 번호의 단계 크기 또는 탭 너비(공통 탭 문자 너비이므로 기본값은 8)입니다. Unix 터미널).

예제를 실행하세요:

$ ./ruler
       1       2       3       4       5       6       7       8       9       0
12345678901234567890123456789012345678901234567890123456789012345678901234567890
$ ./ruler 72
       1       2       3       4       5       6       7       8       9
123456789012345678901234567890123456789012345678901234567890123456789012
$ ./ruler 72 10
         1         2         3         4         5         6         7
123456789012345678901234567890123456789012345678901234567890123456789012
$ ./ruler 122 6
     1     2     3     4     5     6     7     8     9     0     1     2     3     4     5     6     7     8     9     0
12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012

스크립트 ruler:

#!/usr/bin/awk -f

BEGIN {
        width = ARGC >= 2 ? ARGV[1] : 80
        step  = ARGC >= 3 ? ARGV[2] : 8

        while (++i <= width) {
                if (i%step == 0) line1 = line1 sprintf("%*s", step, (i/step)%10)
                line2 = line2 (i%10)
        }

        print line1
        print line2
}

line2이는 기본적으로 루프가 반복될 때마다 문자열(두 번째 눈금자) 에 다음 숫자를 추가하는 동시에 while각 반복에서 문자열(첫 번째 눈금자)에 숫자가 포함된 올바른 크기 조정 필드를 추가합니다.stepline1step

이 코드에는 너비 제한이 없으며 명령줄 인수에 대한 삭제 또는 유효성 검사가 없습니다.

관련 정보