In a good hash function, any output is as likely as any other. It just turns out that there are many more large numbers than small numbers.
To illustrate, you're generating 64-bit numbers, which you could simulate by tossing a coin 64 times and filling in the binary expansion of your random number: say heads is 0 and tails is 1.
Now pick the largest "small number" that you gave as an example, 98345. Its binary expansion, with a fixed 64-bit width, is:
00000000 00000000 00000000 00000000 00000000 00000001 10000000 00101001
Note the 47 leading zeros. It means that, in order to generate numbers as small as 98345 (and in fact up to 131071) your coin would have to land heads for the first 47 throws. Hopefully it's intuitive that this would be really unlikely. In fact, half the time your first throw would land tails, and as such half the time your output will be larger than $2^{63} = 9,223,372,036,854,775,808$.
As for how to generate small numbers, just reduce your 64-bit number modulo a desired value. Say your definition of "small" is numbers with at most 5 decimal digits, i.e. < 100,000; then, all you need to do is reduce your 64-bit numbers modulo 100,000, e.g. using the %
operator in awk.
Note that, assuming your 64-bit numbers are uniformly distributed (i.e. every 64-bit number is as likely as every other), then reducing modulo anything but a power of 2 will introduce some bias. In most applications this is not likely to be a problem, but in cryptography it often is. There are techniques to eliminate this bias if you need to; have a look at the answers to this question, for instance.