Eu tenho um arquivo, vamos chamá-lo filename.log, nele eu tenho algo parecido com isto
(2014-11-18 14:09:21,766), , xxxxxx.local, EventSystem, DEBUG FtpsFile delay secs is 5 [pool-3-thread-7]
(2014-11-18 14:09:21,781), , xxxxxx.local, EventSystem, DEBUG FtpsFile disconnected from ftp server [pool-3-thread-7]
(2014-11-18 14:09:21,798), , xxxxxx.local, EventSystem, DEBUG FtpsFile FTP File Process@serverStatus on exit - 113 [pool-3-thread-7]
(2014-11-18 14:09:21,798), , xxxxxx.local, EventSystem, DEBUG FtpsFile FTP File Process@serverStatus on exit - 114 [pool-3-thread-7]
(2014-11-18 14:09:21,799), , xxxxxx.local, EventSystem, DEBUG JobQueue $_Runnable Finally of consume() :: [pool-3-thread-7]
Estou tentando encontrar as classes que produzem as mensagens DEBUG mais frequentes.
Neste exemplo, você pode ver FtpsFile e JobQueue duas das classes que produzem uma mensagem.
Eu tenho isso
cat filename.log | sed -n -e 's/^.*\(DEBUG \)//p' | sort | uniq -c | sort -rn | head -10
Isso produzirá o nome da classe e mostrará as classes mais frequentes como um dos 10 melhores.
O problema é que isso não me dá a contagem da classe FtpsFile como 4. Ele conta cada arquivo de log do FtpsFile como uma entidade única diferente.
Como eu mudo o comando acima para basicamente pegar a primeira palavra após o DEBUG e ignorar o resto para sua contagem?
Idealmente eu deveria ter
4 FtpsFile
1 JobQueue