Portál AbcLinuxu, 10. května 2025 11:03
for x in `seq 0 16383`; do printf '%04x\n' $x; done >/tmp/rada_hex_cisel
a pak :r /tmp/rada_hex_cisel
ve vim-u...
#!/usr/bin/env python N = 16384 i = 0 while i < N: print 'Toto je %04x. hexadecimalni cislo.'%i i = i + 1vytvoří 16384 řádků s hexadecimálními čísly. První je 0000, ale poslední je 3fff. Opravdu má být poslední ffff?
#!/usr/bin/env python N = 16384 i = 0 f = open('/tmp/rada_hex_cisel', 'w') while i < N: f.write('Toto je %04x. hexadecimalni cislo.\n'%i) i = i + 1 f.close()Mimochodem, běží to cca 12x rychleji než ten skriptík v shellu.
for i in xrange(0,16384): print "%04x" % (i)Případně pro příznivce funkcionálního programování
def pr(i): print "%04x" % (i) map(pr , xrange(0,4))
- map(pr , xrange(0,4)) + map(pr , xrange(0,16384))
$ time python -c "range(0,1000000)" real 0m0.090s user 0m0.056s sys 0m0.032s $ time python -c "xrange(0,1000000)" real 0m0.018s user 0m0.012s sys 0m0.008sAle zajímavější je, že xrange generuje téměř stejně rychle i delší posloupnosti.
$ time python -c 'for i in xrange(0,1000000):print "%05x"%i' > /dev/null real 0m5.281s user 0m5.280s sys 0m0.010s $ time perl -e 'for(0..1000000){printf"%05x\n",$_}' > /dev/null real 0m1.200s user 0m1.200s sys 0m0.000s
$ time seq 1000000 | xargs printf "%05x\n" > /dev/null real 0m1.996s user 0m3.150s sys 0m0.960s
$ bash --version GNU bash, version 3.00.15(1)-release (i686-redhat-linux-gnu) Copyright (C) 2004 Free Software Foundation, Inc. $ time seq 1000000 | xargs printf "%05x\n" > /dev/null printf: 1e+06: value not completely converted real 0m3.046s user 0m4.388s sys 0m1.296s
seq -f '%7.0f' 1000000 | xargs printf '%05x\n'(Bohuzel, seq neumi pracovat s celociselnymi formaty, jinak by se problem vyresil proste jako
seq -f '%05x' 1000000
).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.