Ldapsearch y Perl para evitar saltos de línea en atributos largos

En algunas versiones del comando ldapsearch es (o era) posible configurar con un parámetro (-T) que los valores largos de los atributos no tuvieran un salto de línea. En las versiones actuales con las que he trabajado ya no es posible así que os dejo un truco para parsear la salida de ldapsearch y con perl eliminar estos saltos de línea (útil para procesar la salida, por ejemplo).

La salida de un ldapsearch cuando el valor del atributo es muy largo es así, con un salto de línea y un espacio al comienzo de las líneas siguientes a la principal indicando que es la continuación de la anterior, ejemplo:

cn: zsdzsdasda32zsda2xzYWR1YXNkajMsbPFqYWRzOW9xM2xr8WFzZGFzZGFrb2
 ozaWpwamvxYXNkYXNkYXNk==

Para evitar esta situación simplemente ejecutáis el ldapsearch y posteriormente con un pipe añadís la siguiente ejecución de perl contra la salida del ldapsearch:

perl -p00e 's/\r?\n //g'

Lo que hace es indicar que las líneas que comienzan con un espacio se junten con la línea anterior. La ejecución completa sería por ejemplo:

$ ldapsearch -h localhost -D "cn=Directory Manager" -W -b "o=testing" objectClass=* | perl -p00e 's/\r?\n //g'

Y os sacará cada valor en una única línea:

cn: zsdzsdasda32zsda2xzYWR1YXNkajMsbPFqYWRzOW9xM2xr8WFzZGFzZGFrb2ozaWpwamvxYXNkYXNkYXNk==

En otra entrada ya os puse como hacerlo, pero en ese caso era con el comando sed.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *