매번 1을 추가하고 매번 39999를 추가하는 일련의 숫자를 생성하려고 합니다. 내 요구 사항을 최대 100만 개까지 충족할 수 있는 목록의 예:
1 40000
40001 80000
80001 120000
120001 160000
160001 200000
200001 240000
240001 280000
280001 320000
320001 360000
360000 400000
400001 440000
440001 480000
480001 520000
520001 560000
560001 600000
600001 640000
640001 680000
680001 720000
720001 760000
760001 800000
800001 840000
840001 880000
880001 920000
920001 960000
960001 1000000
사용해 보았지만 seq
가끔씩 증분을 변경하는 방법을 찾지 못했습니다.
답변1
"수동" 출력 시퀀스 사용
i=0
while [ "$i" -lt 1000000 ]; do
printf '%d %d\n' "$(( i+1 ))" "$(( i += 40000 ))"
done
또는
for (( i = 1; i < 1000000; i += 40000 )); do
printf '%d %d\n' "$i" "$(( i + 39999 ))"
done
또는 그런 것.
또는 paste
두 개의 개별 시퀀스를 함께 배치합니다 seq
.
$ paste <( seq 1 40000 1000000 ) <( seq 40000 40000 1000000 )
1 40000
40001 80000
80001 120000
120001 160000
160001 200000
200001 240000
240001 280000
280001 320000
320001 360000
360001 400000
400001 440000
440001 480000
480001 520000
520001 560000
560001 600000
600001 640000
640001 680000
680001 720000
720001 760000
760001 800000
800001 840000
840001 880000
880001 920000
920001 960000
960001 1000000
JdeBP가 제안한댓글에서:
jot - 1 1000000 40000 | awk '{ print $1, $1+39999 }'
그러나 Linux 시스템( 원래는 BSD 유틸리티 이지만 GNU coreutils의 일부) seq
에서 사용하기가 더 쉽고 여기에서 가장 일반적인 방문자는 Linux 사용자이므로 질문은 맨 위의 두 번째 루프와 본질적으로 동일합니다. 로 표시됨jot
seq
순서, 다음과 같이 작성하는 것이 더 유용할 수 있습니다.
seq 1 40000 1000000 | awk '{ print $1, $1+39999 }'
답변2
싱글적인 AWK
표현을 즐겨보세요 :)
awk 'BEGIN{ while (c < 1000000) print (++c, c += 39999) }'
++c
-앞으로증분변수
산출:
1 40000
40001 80000
80001 120000
120001 160000
160001 200000
200001 240000
240001 280000
280001 320000
320001 360000
360001 400000
400001 440000
440001 480000
480001 520000
520001 560000
560001 600000
600001 640000
640001 680000
680001 720000
720001 760000
760001 800000
800001 840000
840001 880000
880001 920000
920001 960000
960001 1000000
답변3
제 생각에는 이것이 크게 단순화될 수 있을 것 같습니다.
for i in $(seq 0 24); do
printf "$(($i * 40000 + 1)) $((($i+1) * 40000))\n";
done;
1 40000
40001 80000
80001 120000
120001 160000
160001 200000
200001 240000
240001 280000
280001 320000
320001 360000
360001 400000
400001 440000
440001 480000
480001 520000
520001 560000
560001 600000
600001 640000
640001 680000
680001 720000
720001 760000
760001 800000
800001 840000
840001 880000
880001 920000
920001 960000
960001 1000000