Estoy usando openldap y normalmente uso el comando ldapsearch uid=<ldap> +
para verificar cierto atributo y, al ejecutar dicho comando, producirá un resultado completo, por ejemplo:
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
lastLoginTime: 20220829012233Z
passwordRetryCount: 0
retryCountResetTime: 20220826111616Z
passwordExpWarned: 0
passwordExpirationTime: 20220905092802Z
pwdUpdateTime: 20220707092802Z
modifyTimestamp: 20220707092802Z
Si, por ejemplo, quisiera grep solo "retryCountResetTime", intento ejecutar:
ldapsearch uid=<ldap> + | grep ^retryCountResetTime
Pero el resultado será:
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
retryCountResetTime: 20220826111616Z
Me gustaría eliminar las primeras 3 líneas (SASL) agregando tail -1, pero no funciona.
¿Alguna sugerencia sobre cómo puedo eliminar la línea 1-3?
Respuesta1
Como@steeldrivermencionado dentro delcomentarios:
¿Quizás las primeras 3 líneas no van al flujo de salida estándar, sino al flujo de error estándar?
Para verificar que puedes redirigir el canal STDERR a algún otrolugar, por ejemplo el dispositivo nulo agregando 2>/dev/null
al final del comando:
command -options arguments 2>/dev/null | grep 'something'
Si desea procesarlo, puede redirigirlo a STDOUT agregando 2>&1
:
command -options arguments 2>&1 | grep 'something'
Tenga en cuenta que si desea redirigir STDERR junto con STDOUT a un archivo, la sintaxis es:
command -options arguments >/path/to/some.log 2>&1