毎回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
2つの別々のシーケンスを一緒に配置します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ユーザーなので、質問は一番上の2番目のループと本質的に同じです。と表示される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