我正在使用 openldap,通常我会使用命令ldapsearch uid=<ldap> +
来检查某些属性,通过运行这样的命令,它将产生完整的输出,例如:
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
例如,如果我只想 grep“retryCountResetTime”,我会尝试运行:
ldapsearch uid=<ldap> + | grep ^retryCountResetTime
但输出将是:
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
retryCountResetTime: 20220826111616Z
我想通过添加 tail -1 来删除前 3 行(SASL),但是它不起作用。
有什么建议可以删除第 1-3 行吗?
答案1
作为@steeldriver提及评论:
也许前三行根本不会进入标准输出流,而是进入标准错误流?
要验证是否可以将 STDERR 通道重定向到其他地方,例如在2>/dev/null
命令末尾添加空设备:
command -options arguments 2>/dev/null | grep 'something'
如果您想要处理它,您可以通过添加以下内容将其重定向到 STDOUT 2>&1
:
command -options arguments 2>&1 | grep 'something'
请注意,如果您想将 STDERR 和 STDOUT 重定向到文件,语法为:
command -options arguments >/path/to/some.log 2>&1