A primeira coisa que você precisa fazer é remover as linhas indesejadas da saída de showq -r
, ou seja, linhas que dizem tarefas ativas, etc., que podem ser feitas usando showq -r | sed '1,2d' |sed '$d'
, ou você pode usar grep
com uma expressão regular que descreve parte da linha de dados - por exemplo grep "----"
neste caso pode funcionar se o valor de EFFIC
for sempre ----
. Quando você tiver um arquivo com apenas linhas de dados, use associative arrays in awk
fazer o resto da magia.
#!/bin/awk
{
proc_count[$7] = proc_count[$7] + $10;
if ($10 > 1) { multi_proc[$7]++; } else { single_proc[$7]++; }
}
END {
for (foo in proc_count) { print foo, proc_count[foo], multi_proc[foo], single_proc[foo] }
}
Se você executar o script acima, você notará que nada é exibido para a contagem do processador serial de user_z
. Isso porque eu estava tentando salvar linhas e não imprimi 0
. Vou deixar que você adicione a verificação de erros e prettifique a saída.