web-dev-qa-db-ja.com

UNIXでlessコマンドを使用してログファイルで複数の文字列を検索する方法は?

ログファイルで複数の文字列を検索したい。すべての検索文字列が同じ行にある場合は、それらのエントリのみをハイライトする必要があります。これまたは他のより良いオプションに少ないコマンドを使用できますか?通常、ログファイルのサイズは数GBです。

10
Satish

string1またはstring2を検索する場合は、/string1|string2を使用します。あなたはあなたが両方を見つける行を望んでいたと言いました:

/string1.*string2

行の順序がわからず、完全な行を表示したい場合は、

/.*string1.*string2.*|.*string2.*string1.*

またはより短い

/.*(string1.*string2|string2.*string1).*

順序を固定せずにさらに多くの単語を組み合わせると混乱します。最初にawkでフィルタリングするのはいいことです。

12
Walter A

awkを使用してファイルをフィルタリングし、lessを使用してフィルタリングされた結果を表示します。

awk '/pattern1/ && /pattern2/ && /pattern3/' file.log | less

ファイルが大きい場合は、stdbufを使用して、lessの初期の結果を確認できます。

stdbuf awk '/pattern1/ && /pattern2/ && /pattern3/' file.log | less
3
hek2mgl