私は、いくつかのbashスクリプトも使用して、Pythonで次のことをしようとしています。Python でもっと簡単な方法がない限り。
次のようなデータを含むログ ファイルがあります。
16:14:59.027003 - WARN - Cancel Latency: 100ms - OrderId: 311yrsbj - On Venue: ABCD
16:14:59.027010 - WARN - Ack Latency: 25ms - OrderId: 311yrsbl - On Venue: EFGH
16:14:59.027201 - WARN - Ack Latency: 22ms - OrderId: 311yrsbn - On Venue: IJKL
16:14:59.027235 - WARN - Cancel Latency: 137ms - OrderId: 311yrsbp - On Venue: MNOP
16:14:59.027256 - WARN - Cancel Latency: 220ms - OrderId: 311yrsbr - On Venue: QRST
16:14:59.027293 - WARN - Ack Latency: 142ms - OrderId: 311yrsbt - On Venue: UVWX
16:14:59.027329 - WARN - Cancel Latency: 134ms - OrderId: 311yrsbv - On Venue: YZ
16:14:59.027359 - WARN - Ack Latency: 75ms - OrderId: 311yrsbx - On Venue: ABCD
16:14:59.027401 - WARN - Cancel Latency: 66ms - OrderId: 311yrsbz - On Venue: ABCD
16:14:59.027426 - WARN - Cancel Latency: 212ms - OrderId: 311yrsc1 - On Venue: EFGH
16:14:59.027470 - WARN - Cancel Latency: 89ms - OrderId: 311yrsf7 - On Venue: IJKL
16:14:59.027495 - WARN - Cancel Latency: 97ms - OrderId: 311yrsay - On Venue: IJKL
各行から最後のエントリを抽出し、一意の各エントリを使用してすべての行を検索し、それが表示され、.csv ファイルにエクスポートする必要があります。
次の bash スクリプトを使用して、一意の各エントリを取得しましたdate +%Y%m%d
。awk '{print $14}' | ソート | ユニーク
ログ ファイルの上記のデータに基づいて、bash スクリプトは次の結果を返します。
ABCD
EFGH
IJKL
MNOP
QRST
UVWX
YZ
ここで、同じログ ファイル内の各結果を検索 (または grep) し、上位 10 件の結果を返したいと思います。これを行う別の bash スクリプトがありますが、FOR ループを使用してこれを行うにはどうすればよいですか? したがって、x の場合、ここで x = 上記の各エントリは、
grep x LogFile_ date +%Y%m%d
.msg.log | awk '{print $7}' | 並べ替え -nr | ユニーク | 頭 -10
次に、結果を .csv ファイルに返します。結果は次のようになります (各フィールドが別の列に表示されます)。
Column-A Column-B Column-C Column-D
ABCD 2sxrb6ab Cancel 46ms
ABCD 2sxrb6af Cancel 45ms
ABCD 2sxrb6i2 Cancel 63ms
ABCD 2sxrb6i3 Cancel 103ms
EFGH 2sxrb6i4 Cancel 60ms
EFGH 2sxrb6i7 Cancel 60ms
IJKL 2sxrb6ie Ack 74ms
IJKL 2sxrb6if Ack 74ms
IJKL 2sxrb76s Cancel 46ms
MNOP vcxrqrs5 Cancel 7651ms
私は Python の初心者で、大学時代 (13 年前) からあまりコーディングをしていません。どんな助けでも大歓迎です。ありがとう。