Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: jamesbond 07 Srpna 2011, 17:29:11
-
Ahoj, vedel by mi niekto poradiť, ako vypísať v Make veľkosť generovaného HEX file ?
Už ho mám utriedený vzostupne podľa adresy (sort -k1.8,1.9 -k1.4,1.7) takže teraz je na prvom riadku najnižšia adresa a na predposlednom riadku najvyššia. Stačilo by zistiť adresu z predposledného riadku a vypísať. V lepšom prípade by ešte mohol pripočítať dĺžku predposledného riadku. V dokonalom prípade by ešte mohol odpočítať počiatočnú adresu z prvého riadku. Výstup by mohol byť dekadicky alebo hexadecimálne, alebo oboje.
http://cs.wikipedia.org/wiki/Intel_HEX (http://cs.wikipedia.org/wiki/Intel_HEX)
Toto je skrátený výpis toho hex file:
:20080000F331E0FF3E4CD3003EC332ECFF21870922EDFF3E1D30FBC3C90B7E6F079F67C9BB
:200820007E23666FC97D12C97D12137C12C97DB36F7CB267C97DAB6F7CAA67C97DA36F7C33
:20084000A267C9CD8308C82BC9CD8308C02BC9EBCD8308D82BC9CD8308C8D82BC9CD830853
.
...krátené...
.
:20127C003E01CDAC0EC1C9210C00E53E01CDAC0EC1C9210800E53E01CDAC0EC1C9210C0015
:20129C00E53E01CDAC0EC1C93B21000039E5210000D1CD250821000039CD1A08E521050043
:2012BC0039CD1A08D1CD63087CB5C2DD12C3EA1221000039E5CD1A0823D1CD25082BC3B185
:2012DC0012211000E53E01CDAC0EC1C3CC1233C93B21000039E5210000D1CD25082100001F
:2012FC0039CD1A08E521050039CD1A08D1CD63087CB5C22513C3321321000039E5CD1A080D
:18131C0023D1CD25082BC3F912211400E53E01CDAC0EC1C3141333C94B
:2013340021020039CD1A087D324013DB006FAF67C9C921040039CD1A087D325A13210200CE
:0913540039CD1A087DD300C9C986
:20135D004E43423835202020202020204C4344203230783400557074696D652000536D619A
:12137D006C6C43203830383020636F6D70696C657200D8
:1413990000005F1101007811020091110300AA11C311000010
:00000001FF
-
Předposlední řádek:
cat zdroj | sed -e :a -e '$q;N;3,$D;ba' | sed q
a pak z toho snadno vypreparuješ 4.-8. znak:
cat zdroj | sed -e :a -e '$q;N;3,$D;ba' | sed q | sed -e 's/...\(....\).*/\1/g'
Kdybys chtěl odčítat číslo řádky z počátku souboru, tak už bych to psal v pythonu.
Viz též http://www.soluflex.co.uk/index.php?option=com_content&view=article&id=94:useful-sed-oneliners&catid=61:aix&Itemid=18
-
Funguje to. Potrebujem aj pripočítať dĺžku na tom predposlednom riadku a aj odpočítať adresu z prvého riadku. Tak nejako som tušil, že toto už bude asi nad možnosti sed alebo awk. Python sa mi nechce učiť, ani inštalovať (pracujem skôr na Windows pod Cygwin ale aj v Ubuntu) napíšem si to radšej v C.
Dík.