Imprime a quantidade de vezes que 2 palavras aparecem no syslog. Mas também me diga quantas vezes por hora

1

Estou tentando criar um script bash que procure duas palavras no meu arquivo syslog. Então eu quero que o script imprima quantas vezes essas duas palavras apareceram. Também quero que seja impresso para cada hora do dia. Então, como se a palavra cachorro aparecesse 4 vezes durante a primeira hora de hoje, diz Hora 1, cão 4. Finalmente, no final do script, quero imprimir quantas vezes essas palavras apareceram o dia todo.

O código do sudo que tenho até agora é

if 2 > hour
find permit
find block
print both
finish

if 1 < hour < 2
find permit
find block
print both
finish

if 2 < hour < 3
find permit
find block
print both
finish

o comando é     grep -o "\ WORD \" Syslog.txt * | classificar | uniq -c

    
por M. Wolf 04.06.2014 / 19:36

1 resposta

1

Aqui está um código com menos pseudo. Eu não testei, então talvez não funcione, mas é onde eu devo começar.

function findprint {
    local word1 = $(echo  | grep -o "\WORD1\" | wc -w)
    local word2 = $(echo  | grep -o "\WORD2\" | wc -w)
    word1total=$[word1total+word1]
    word2total=$[word2total+word2]
    echo "$word1 WORD1"
    echo "$word2 WORD2"
}
word1total = 0;
word2total = 0;
while read line; do
    if [ hour -lt 2 ]; then
        echo "Hour 1"
        findprint "$line"
    fi

    if [ hour -gt 1 && hour -lt 2 ]; then
        echo "Hour 2"
        findprint "$line"
    fi

    if [ hour -gt 2 && hour -lt 3 ]; then
        echo "Hour 3"
        findprint "$line"
    fi
done < /var/log/syslog

echo "TOTAL:"
echo "$word1total WORD1"
echo "$word2total WORD2"
    
por Nattgew 04.06.2014 / 22:32