我试图生成一个数字序列,每隔一次加 1,每隔一次加 39999。列表示例,它可以满足我最多一百万的需求:
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 }'
但它本质上与顶部的第二个循环相同,因为seq
在 Linux 机器上更容易使用(jot
最初是一个 BSD 实用程序,而seq
是 GNU coreutils 的一部分),并且这里最常见的访问者是 Linux 用户,并且问题被标记为序列,它可能更有用地写为
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