「[numberLargerThan5000]ms」の発生をどのように把握しますか?

「[numberLargerThan5000]ms」の発生をどのように把握しますか?

フォームの各エントリを含む.logファイルがあります。

2018-09-28T10:53:48,006 [Jetty-6152  ] INFO  [correlationId] my.package.service:570 - Inbound request: 1.2.3.4 - GET - 12342ms - 200 - /json/some/resource
2018-09-28T11:53:48,006 [Jetty-6152  ] INFO  [correlationId] my.package.service:570 - Inbound request: 1.2.3.4 - GET - 204ms - 200 - /json/other/resource

リクエストに5秒以上かかるすべてのアイテムを見つけるにはどうすればよいですか?アイテムに「[numberGreaterThan5000]ms」というテキストが含まれていますか?

ベストアンサー1

私はこれが次のようになるべきだと思います。

grep -E '([5-9][0-9]{3}|[0-9]{5,})ms' | grep -v 5000ms

どのように動作しますか?

  1. 使用される-E正規表現は「現代的な」形式(拡張とも呼ばれます)です。私たちの場合、いくつかの文字を保存できるため、入力が簡単になります\
  2. (...|...)ms文字列の後に2つの選択肢を検索しますms。正規表現は数値を比較できないため、これが必要です。だから私はそう言うことはできません >= 5000
  3. 最初のオプションは、[5-9][0-9]{3}5から9の間の数字で始まり、その後に0から9の間の数字が3回表示される文字列を一致させることです。数字は> = 5000と< 10000です。
  4. 2番目のオプションは、5桁以上の文字列、つまり10000を超える数字と一致します。
  5. 最後に、結果をパイプしてすべてのgrep -v 5000ms発生をフィルタリングします。5000ms大きい5000より大きい。より大きいか等しい場合は、値を無視してください。

どこでもっと学ぶことができますか?

読んでman 1 grepman 7 regex

おすすめ記事