EAN-13 decode s sedom

Andrej Lajovic andrej.lajovic at guest.arnes.si
Mon Sep 15 15:45:42 CEST 2003


Zivjo!

Ker sem prepričan, da si moj današnji izum zasluži odobravanje/zgražanje
širšega občinstva, ga pošiljam semle. In še malo navodil za uporabo:
program pričakuje na stdin vrstico stila "11122213211..." ki označuje
širine zaporednih črnih in belih polj črtne kode v zapisu EAN-13 (črtna
koda, ki se nahaja na večini izdelkov v trgovinah), na stdout pa dobite
dekodirano številko, ki je ponavadi napisana pod črtno kodo.

Source je pa tole:

sed 's/\(.\)/\1-/g;s/1/x/g;s/2/xx/g;s/3/xxx/g;s/4/xxxx/g;s/\(x*-x*\)-/\1|/g;s/xx
xx-/1111-/g;s/xxx-/111-/g;s/xx-/11-/g;s/x-/1-/g;s/x/0/g;s/[-|]//g;s/^101\(.\{42\
}\)01010\(.\{42\}\)101$/\1\2/g;s/\(.\{7\}\)/\1-/g;s/0001101/X0O/g;s/0100111/X0E/
g;s/0011001/X1O/g;s/0110011/X1E/g;s/0010011/X2O/g;s/0011011/X2E/g;s/0111101/X3O/
g;s/0100001/X3E/g;s/0100011/X4O/g;s/0011101/X4E/g;s/0110001/X5O/g;s/0111001/X5E/
g;s/0101111/X6O/g;s/0000101/X6E/g;s/0111011/X7O/g;s/0010001/X7E/g;s/0110111/X8O/
g;s/0001001/X8E/g;s/0001011/X9O/g;s/0010111/X9E/g;s/1110010/X0X/g;s/1100110/X1X/
g;s/1101100/X2X/g;s/1000010/X3X/g;s/1011100/X4X/g;s/1001110/X5X/g;s/1010000/X6X/
g;s/1000100/X7X/g;s/1001000/X8X/g;s/1110100/X9X/g;s/..O-..O-..O-..O-..O-..O-/0&/
g;s/..O-..O-..E-..O-..E-..E-/1&/g;s/..O-..O-..E-..E-..O-..E-/2&/g;s/..O-..O-..E-
..E-..E-..O-/3&/g;s/..O-..E-..O-..O-..E-..E-/4&/g;s/..O-..E-..E-..O-..O-..E-/5&/
g;s/..O-..E-..E-..E-..O-..O-/6&/g;s/..O-..E-..O-..E-..O-..E-/7&/g;s/..O-..E-..O-
..E-..E-..O-/8&/g;s/..O-..E-..E-..O-..E-..O-/9&/g;s/[-A-Z]//g'

Preden stvar uporabite, je treba pobrisat vse \n, ker je v resnici vse ena
sama vrstica. Program samo dekodira in ne preverja checksuma. Če je input
neveljaven, je output nedefiniran.

Primer uporabe na neki ISBN kodi:
$ sh ean13
11113123121211311141222111411111141111142221212212311231111
9789616361255

Hvala meni, res. Zdej potrebujem samo še kakšno čarvnijo s 'convert' in
podobnimi, pa bomo lahko brali črtne kode kar naravnost s skenerja.

Lep pozdrav,
Andrej



More information about the lugos-bla mailing list