[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: strano problemino con stringhe base64



On 3/12/24 18:04, Giuseppe Sacco wrote:
Ciao Piviul,

Il giorno mar, 12/03/2024 alle 10.18 +0100, Piviul ha scritto:
Ciao a tutti, ho uno script che interroga (ldapsearch) alcuni campi di
un db ldap e aggiunge alcuni altri ammenicoli che poi importa in un
altro db sempre ldap.
[...]
              -e "s/displayName:\ \(.*\)$/displayName: \1\nsn: \1\nou:
utenti\nobjectClass: top\nobjectClass: inetOrgPerson/"> $ldap_ns_path
[...]

Mi pare di capire che sed sostituisca solo le linee che contengono
"displayName:" seguito da uno spazio. Nel tuo caso "displayName:" non è
seguito da uno spazio, ma dal secondo ":", sicché sed non lo prende in
considerazione. Forse dovresti cambiare l'espressione con le regex estese,
così:

sed -E -e "s/displayName(:|::)\ (.*)$/displayName\1 \2/"

Grazie Giuseppe, hai ragione, che pataca! Grazie ancora, ora è proprio tutto risolto... anzi quasi... per caso in sed, nella sostituzione si possono inserire comandi... qualcosa tipo

echo  "displayName:: Tmljb2zDsiBFZG9hcmRv" | sed -E -e "s/(displayName:): (.*)$/\1 $(echo "\2" | base64 -i --decode)/"

Purtroppo non funziona, restituisce l'errore "base64: input non valido" ma non capisco perché; questo però funziona

echo  "displayName:: Tmljb2zDsiBFZG9hcmRv" |  sed -E -e "s/(displayName:): (.*)$/\1 $(echo "\2")/"

e restituisce

displayName: Tmljb2zDsiBFZG9hcmRv

Quindi sembra non venga interpretato correttamente il pipe... hai qualche suggerimento?

Piviul


Reply to: