sort
permite a classificação por campos específicos com a -k
opção :
sort -k11 -k1,2 data
classificará primeiro pelo campo 11 (nome de usuário) e depois pelos campos 1 e 2 juntos (data). Note que a ordem é importante aqui: classifica pela primeira opção -k
e usa a próxima para quebrar os laços (e assim por diante).
Isso é muito dependente da saída exata que você tem lá - cada seqüência de espaços é um separador de campo, então "lookup failed for" é de três campos diferentes.
A edição faz parecer que seus dados reais têm campos separados por tabulações, embora eu não consiga descobrir onde estão as guias nesse caso. Em caso afirmativo, você precisa fornecer uma guia literal, pois o argumento para -t
- sort
não compreende escapes, e seu shell provavelmente não expande \t
. Pressione Ctrl-V Tab para escrever um caractere de tabulação literal ali, ou faça um para substituir: algo como "$(echo -ne '\t')"
é uma opção. Se este for o caso, substitua os números de campo apropriados em.
-k5,5n
é uma classificação numérica apenas no campo 5, pois nenhum dos seus dados é numérico e parece um erro.
O GNU sort
e alguns outros incluem uma extensão de classificação -M
mês que você pode usar para colocar meses em ordem. Isso pode ou não estar disponível para você; também está em FreeBSD e OS X , mas não o outro BSDs e não Unices comerciais. Se estiver disponível, -k1,1M -k2,2n
classificará as datas pela ordem correta de mês / dia. Observe que também depende da sua localidade: se o arquivo de log e o ambiente usarem uma localização diferente, isso não funcionará. Sem isso, eles serão agrupados por mês e classificados por data em cada mês corretamente.