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