18

特定の行を見た回数を時間単位または分単位で数えるコマンドは何でしょうか?

ファイル:

Nov 26 08:50:51
Nov 26 08:50:51
Nov 26 08:51:09
Nov 26 08:51:09
Nov 26 08:51:09
Nov 26 08:51:09
Nov 26 08:51:40

私が見たい出力:

分単位:

Nov 26 08:50    2
Nov 26 08:51    5

時間別:

Nov 26 08       7
4

3 に答える 3

33

これは次の方法で実行できますuniq

$ uniq -w9 -c file       # by hour
      7 Nov 26 08:50:51
$ uniq -w12 -c file      # by minute
      2 Nov 26 08:50:51
      5 Nov 26 08:51:09

-wn最初の文字のみを比較します。

-c出現回数でプレフィックス行。

于 2012-11-27T10:07:03.790 に答える
2

awk ワンライナーを使用すると、1 回のショットで時間単位と分単位でカウントできます。

awk -F: '{h[$1]++;m[$1":"$2]++;}END{for(x in h)print x,h[x]; print "---"; for(x in m)print x,m[x]}' file

テスト

kent$  echo "Nov 26 08:50:51
Nov 26 08:50:51
Nov 26 08:51:09
Nov 26 08:51:09
Nov 26 08:51:09
Nov 26 08:51:09
Nov 26 08:51:40"|awk -F: '{h[$1]++;m[$1":"$2]++;}END{for(x in h)print x,h[x]; print "---"; for(x in m)print x,m[x]}'    

出力

Nov 26 08 7
---
Nov 26 08:50 2
Nov 26 08:51 5
于 2012-11-27T10:36:37.243 に答える
1

時間別:

awk '{split($3,a,":");b[$1" "$2" "a[1]]++}END{for(i in b)print i,b[i]}' your_file

以下でテスト済み:

> awk '{split($3,a,":");b[$1" "$2" "a[1]":"a[2]]++}END{for(i in b)print i,b[i]}' temp
Nov 26 08:50 2
Nov 26 08:51 5
>

分単位:

awk '{split($3,a,":");b[$1" "$2" "a[1]":"a[2]]++}END{for(i in b)print i,b[i]}' your_file

以下でテスト:

> awk '{split($3,a,":");b[$1" "$2" "a[1]]++}END{for(i in b)print i,b[i]}' temp
Nov 26 08 7
于 2012-11-27T10:22:59.690 に答える