Eu preciso de grep
do log de erro do MySQL começando na data de hoje formatada como:
'date +"%y%m%d"' (140710)
E procure todas as instâncias da palavra partitioned
.
Eu tentei várias coisas sem sucesso. Isso pareceu funcionar:
more +/"'date +"%y%m%d"'" mysql-error.log | grep -c partitioned
No entanto, se o arquivo de log não contiver nenhuma entrada de hoje, em vez de retornar zero, ele pesquisará o arquivo inteiro e retornará um número para o arquivo inteiro.
Eu preciso que ele retorne zero, se não houver entradas a partir de hoje, não grep
do arquivo inteiro e conte os resultados.
Existe alguma maneira melhor de fazer isso usando sed
ou awk
ou algo assim?
Tecnicamente, o que eu suponho que preciso contar é } partitioned {
seguido por uma string de caracteres numéricos alfa,}) porque {{sem qualquer string}} em partes poderia ocorrer e não deveria ser contado.
Isso não é um requisito estrito. Eu ficaria feliz em apenas contar instâncias da palavra partitioned
.
Aqui está um exemplo do arquivo de log:
140109 12:25:07 [Note] WSREP: view(view_id(PRIM,c4819ddf-7952-11e3-89fc-4f9f1bfa267f,3) memb {
c4819ddf-7952-11e3-89fc-4f9f1bfa267f,
} joined {
} left {
} partitioned {
f85c2e70-7952-11e3-a759-aa8332246e85,
})
140109 12:25:07 [Note] WSREP: Shifting JOINED -> SYNCED (TO: 85)