2

解析して固有のエラーを取得したい手に負えないApacheエラーログがいくつかあります。

[Fri Sep 21 06:54:24 2012] [error] [client xxx.xxx.xxx.xxx ] PHP Fatal error: <error message>, referrer: <url>

「PHP Fatal」セクションの行を切り刻み、前半を破棄し、後半をuniqで実行したいだけだと思います。私の目標はすべてのエラーを特定することですが、多くの重複エラーがあるため、手作業で調べるには行が多すぎます。

これを達成するための最良の方法は何ですか?

4

4 に答える 4

2

試すgrep -o '\[error\].*$' file | sort | uniq

これにより、正規表現に一致するもののみが表示されます (一致を含む行全体ではなく)。

次に sort は、類似のエントリを隣り合わせに配置し、uniq が重複がないことを確認できるようにします。

並べ替え/一意化する前にクライアント ビットを削除する場合は、次を使用します。 grep -o '\[error\].*$' file | sed 's/\[client.*\?\]//' | sort | uniq

于 2012-09-21T14:36:56.767 に答える
0

sedを使用:

sed -r 's/(.*)(PHP Fatal error)/\2/' logfile | sort -u
于 2012-09-21T15:07:14.957 に答える
0

正規表現解析文字列は次のようになりますERROR.*(regex101.comでテストしてください)

以下のコマンドは、大文字と小文字を区別せずに検索することを保証します

grep -ori 'ERROR.*$' filename | sort | uniq
于 2019-07-10T08:59:20.650 に答える