私は 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
たとえば、「retryCountResetTime」のみを grep したい場合は、次のように実行します。
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
おそらく最初の 3 行は標準出力ストリームにはまったく出力されず、標準エラー ストリームに出力されるのでしょうか?
STDERRチャネルを他のチャネルにリダイレクトできることを確認するには場所たとえば、null デバイスの場合は、2>/dev/null
コマンドの最後に次を追加します。
command -options arguments 2>/dev/null | grep 'something'
処理したい場合は、以下を追加して STDOUT にリダイレクトできます2>&1
。
command -options arguments 2>&1 | grep 'something'
STDOUT とともに STDERR をファイルにリダイレクトする場合の構文は次のようになります。
command -options arguments >/path/to/some.log 2>&1