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