Ao usar variáveis shell, você pode preservar caracteres de espaço (mais precisamente, impedir que os valores sejam divididos em palavras baseadas nos caracteres separadores de campo, que são enumerados na variável shell $ IFS) cercando as variáveis shell com aspas duplas.
for w in "${WORDS[@]}"
do
echo -n "$f [$w]:"
grep -aci "$w" $f 2>/dev/null
done
(Também não faria mal rodear $f
com aspas, caso você encontre nomes de arquivos com espaços.)
As the second loop(2) ends up outputting every unique occurrences of a word in a log, how can its scope be restricted or how should I discard:
the output consisting of single chars?
Adicione grep ..
no pipeline para incluir apenas linhas com 2 ou mais caracteres.
the output consisting of single occurrences?
Adicione -d
ao uniq
no pipeline, para que ele mostre apenas linhas duplicadas.
cat $f 2>/dev/null | tr -c '[:alnum:]' '[\n*]' | tr -d '[:digit:]' | sort -f | grep .. | uniq -dci | sort -fnr
Are there any recommendations for visually presenting the output, or is there a tool which provides further functionality for either searching or formatting count and word data?
Há um monte de aplicativos por aí que varrem e resumem ocorrências interessantes em arquivos de log, alguns gratuitos, outros comerciais. Não tenho certeza se podemos dar recomendações gerais, mas se você puder dar exemplos de consultas que gostaria de criar ou exibir os formatos que gostaria de ver, talvez possamos responder a esses tipos de perguntas.