如何在unix中将数字拆分为特定范围(1000之间)

时间:2016-04-13 09:50:13

标签: shell unix awk sed

例如,如果数字是4569。 我需要输出

1 - 1000
1001 - 2000
2001 - 3000
3001 - 4000
4000 - 4569

我现在在JAVA中写了这个逻辑,但我正在将我的代码迁移到UNIX。是否有任何单个衬垫可以分割具有特定范围的数字?

2 个答案:

答案 0 :(得分:2)

使用awk

awk 'BEGIN{e=999;m=4569;for(i=1;i<=m;i+=1000){k=m-i;if(k<1000){e=k};print i" - "i+e}}'

答案 1 :(得分:1)

可能有一个带有awk的单线程。如果你有最近的bash,你可以使用bash算术。这不是那么快。

sample.sh

#!/bin/bash

(( max = $1 ))
(( num = 0 ))
echo "going for " $max

while (( max >= num )); do
    (( prev = num + 1 ))
    (( num = prev + 999 ))
    if (( num >= max )); then
            echo $prev "-" $max
    else
            echo $prev "-" $num
    fi
done

打印

$ ./sample.sh 4569
going for  4569
1 - 1000
1001 - 2000
2001 - 3000
3001 - 4000
4001 - 4569

您可以相应地修改它。