Linuxで特定の形式をgrepして発生回数を取得する方法

Linuxで特定の形式をgrepして発生回数を取得する方法

次の行を含むログファイルがあります。

2022-05-21 23:59:59,2406,842,[75000000,074],passed
2022-05-21 23:59:59,2410,841,[750000,076],passed
2022-05-21 23:59:59,3002,892,[700000,78],passed

grepする他の方法はありますか7570以下を試しましたが、動作しません。私にもこのようなイベントが必要だ。

cat 20220521log|grep -E "2022-05-21 23|75" -C

修正する:

上記のように、各ログには異なるタイムスタンプと数字が含まれています。私のパターンに応じて、各ファイルにいくつかのエントリがあることを確認する必要があります。 20220521 ログファイルを例に挙げます。数値フィールドで始まる行数を確認する必要があります75。その他すべてのフィールドは以前と同じです。

2022-05-21 23:59:59,2406,842,[75000000,074],passed //should take as one occurence
2022-05-21 23:59:59,2406,842,[00000000,074],passed //should not consider
2022-05-21 23:59:59,2406,842,[754324000,074],passed //should take as one occurence.

ベストアンサー1

このために複数のプログラムを呼び出す必要はありません。 Perl(およびおそらくawk / python / ...)がすべてのことを行うことができます。

perl -a -F'' -e 'BEGIN { print "status  count\n" } $a = join "",(@F[30,31]); next unless ($a == 70 or $a == 75); $b{$a}++; END { for (keys %b) { print "$_      $b{$_}\n" } }' < 705361.log

705361質問のID。コマンドをテストするためにファイル/ディレクトリを作成する前にここに置くときに使用するルールです。)

おすすめ記事