我正在使用 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中提到的評論:
也許前 3 行根本不會發送到標準輸出流,而是發送到標準錯誤流?
驗證您是否可以將 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