awk skript

Alexei Sveshnikov sveshnik na fzu.cz
Pátek Prosinec 2 13:12:42 CET 2005


> Dobry den,

Dobry den,

> 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)

Alex




Další informace o konferenci Linux