12

/var/log/ にあるログ ファイルを grep するためのスクリプトを作成しようとしています。非圧縮ログまたは圧縮ログ (ログ ローテーションの結果として) のいずれかを grep することはできますが、1 つのコマンドで両方を実行することはできませんでした (そうしようとすると、「バイナリ ファイル (標準入力) の一致」が表示されます)。そのようなことをすることさえ可能ですか?ありがとう!

4

3 に答える 3

10

zgrep圧縮ファイルと非圧縮ファイルの両方を処理します。1 つの欠点は、ディレクトリを再帰的に処理できないことです。しかし、あなたのインスタンスでは、それで十分であり、次のように syslog などをフィルタリングできます。

$ zgrep PATTERN /var/log/syslog*
于 2015-05-19T09:47:16.560 に答える
6

関数を使用してこれを試してください:

greplog () {
    cd /var/log
    {
        cat $1 $1.*[0-9]
        zcat $1.*.gz
    } | grep "$2"
}

使用法 :

$ greplog syslog pattern
于 2013-02-18T18:17:38.070 に答える