"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
각 반복에서 문자열(첫 번째 눈금자)에 숫자가 포함된 올바른 크기 조정 필드를 추가합니다.step
line1
step
이 코드에는 너비 제한이 없으며 명령줄 인수에 대한 삭제 또는 유효성 검사가 없습니다.