検索出力で「許可拒否」をフィルタリングするにはどうすればよいですか? [コピー]

検索出力で「許可拒否」をフィルタリングするにはどうすればよいですか? [コピー]

私はsed最近それを使い始めました。私が使用する便利な方法は、ログファイル内の重要ではない行を無視することです。

tail -f example.com-access.log | sed '/127.0.0.1/d;/ELB-/d;/408 0 "-" "-"/d;'

ただし、同様に使用しようとすると、find結果は予想とは異なります。次のように、「Permission Denied」を含む行を無視しようとします。

find . -name "openssl" | sed '/Permission denied/d;'

ただし、まだ「許可を拒否しました」というメッセージがたくさん表示されますstdout

編集する

以下の答えで述べたように、「Permission Denied」というメッセージが表示され、stderrNOTに表示されますstdout

答え1

問題は、エラー出力が次に印刷されることです。標準エラーそのため、sedコマンドは入力をキャプチャできません。簡単な解決策は、stderrをstdoutにリダイレクトすることです。

find . -name "openssl" 2>&1 | sed '/Permission denied/d;'

答え2

sedなぜ削除しようとしているのかわかりません。許可が拒否されましたfind- 使い方を学びたくない場合は出力のメッセージですsed

私は単にこれを実行します:

探す。 - 名前 "openssl" 2>/dev/null

ここにリダイレクト中です。標準エラー(ファイル記述子2)に移動します/dev/null(参照man null)。つまり、2>/dev/null単に作成されたすべての内容を破棄します。標準エラー

関連情報