たとえば、番号が4569
の場合。 私は今、このためにJAVAのロジックを書いた番号をユニックスの特定の範囲(1000)に分割する方法
1 - 1000
1001 - 2000
2001 - 3000
3001 - 4000
4000 - 4569
として出力する必要があるが、私はUNIXに私のコードを移行しています。特定の範囲の数値を分割する単一のライナーはありますか?
たとえば、番号が4569
の場合。 私は今、このためにJAVAのロジックを書いた番号をユニックスの特定の範囲(1000)に分割する方法
1 - 1000
1001 - 2000
2001 - 3000
3001 - 4000
4000 - 4569
として出力する必要があるが、私はUNIXに私のコードを移行しています。特定の範囲の数値を分割する単一のライナーはありますか?
awkのあるライナーがある可能性があります。最近のbashをお持ちの場合、bash算術を使用することができます。それほど高速ではありません。
$ ./sample.sh 4569
going for 4569
1 - 1000
1001 - 2000
2001 - 3000
3001 - 4000
4001 - 4569
を印刷し
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
あなたはそれに応じて変更することができます。 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}}'
またはPOSIX互換性:
#!/bin/sh
max=4569
num=1
while [ "$num" -lt "$max" ]; do
next=`expr "$num" + "999"`
[ "$next" -gt "$max" ] && next="$max"
echo "$num - $next"
num=`expr "$next" + "1"`
done
あなたは何を今までしてみてくださいましたか? – MarcoS