2

私はプロジェクトに取り組んでおり、タスクの実行方法を理解するのに助けが必要です. 私はログ ファイルを受け取ります。特定の分に何かが発生した回数を解析してカウントする必要があります。

たとえば、txt ファイルがある場合:

Line 3: 0606 221241  successfully copied to **
Line 5: 0606 221242  successfully copied to **
Line 7: 0606 221242  successfully copied to **
Line 9: 0606 221342  successfully copied to **

2212 で何かが正常にコピーされた回数を知りたいこれまでのところ、コピーに成功した行のみを分離し、日付を分離する次のコードがあります...

grep "successfully copied to" Text.log >> Success.txt
awk '{print ($1,  $2)}' Success.txt > datesAndTimes.txt

これは私に与えます

0606 221241
0606 221242
0606 221242
0606 221243

なんらかの理由で、特定の時刻 (例: 0606 2212) ごとの回数を数える方法がわかりません。発生します。必要なのは分だけで、秒 (2 番目の列の最後の 2 桁) は必要ありません。最終的には、次のようなログ/txt ファイルが必要です。

0606 2212 3
0606 2213 1

等々....

アイデアがある人がいたら、私は少しおならをしています。前もって感謝します!

4

1 に答える 1

2

これは awk ワンライナーで取得できます。

awk '{mm=substr($4, 1, 4); cnt[$3 " " mm]++} END{for(a in cnt) print a " " cnt[a]}' Text.log

ライブデモ: http://ideone.com/w2h64d

于 2013-06-07T18:32:12.023 に答える