awk skript - solved
Vladimir Naprstek
vladimir.naprstek na rwe-ecs.cz
Pátek Prosinec 2 13:55:07 CET 2005
dekuji mnohokrak, pomohlo to...
Alexei Sveshnikov napsal(a):
>
>>mam problem s jednim awk skriptem. Potrebuji z ldif souboru vyzobat jen
>>urcite radky a zaroven prevest base64 kodovani na neco pouzitelneho.
>>Skript (viz nize) se ale chova divne. pokud si udelam vypis prekodovane
>>promenne primo na konci procedury base64decode, tak mi vrati spravnou
>>hodnotu. Pokud ale stejnou hodnotu vypisu tak, jak je ve skriptu
>>uvedeno, tak se mi na konec retezce pridaji znaky ^@ (nekdy jeden, nekdy
>>dva). a nejak nemohu prijit na to, kde se mi ty znaky ve vypise vzaly.
>>Je videt, co delam spatne?
>
>
> Problem je ve funkci base64decode. Presneji receno, funkce funguje tak
> dobre jak jen muze beze znalosti delky puvodnich dat. Pokud v tech datech,
> ktere mate v base64 kodovani, se nevyskytuji bajty s hodnotou 0, pak muzete
> upravit tuto funkci:
>
> ........
> # Reconstruct ASCII string
> b = lshift(and(byte1,63),2) + rshift(and(byte2,48),4)
> if (b) {
> result = result sprintf("%c",b)
> }
> b = lshift(and(byte2,15),4) + rshift(and(byte3,60),2))
> if (b) {
> result = result sprintf("%c",b)
> }
> b = lshift(and(byte3,3),6) + byte4
> if (b) {
> result = result sprintf("%c",b)
> }
> .........
>
> Jinak muzete jeste zkusit vytisknout promennou pomoci printf :
> printf("%s\n", sn)
>
--
Vladimír Náprstek
Další informace o konferenci Linux