Oi arashams! Vi recentemente que você fez perguntas muito semelhantes, que giram em torno do mesmo tópico. Tenho certeza de que a comunidade gostaria de ajudá-lo, mas talvez você possa nos mostrar o que já tentou e onde exatamente ficou preso? Exigimos que as pessoas mostrem um pouco de esforço antes de fazer suas perguntas - não há aprendizado envolvido em simplesmente pedir que outras pessoas forneçam o código para uma coisa específica. Por que não nos dizer qual é exatamente o pano de fundo disso? Talvez exista uma maneira mais fácil de realizar o que você deseja, e não precisamos recorrer a exemplos fictícios com alguns números abstratos?
slhck
tnx por sua ajuda. Estou trabalhando com dados do bgpdump e analisando-os.
Arash20:
Respostas:
12
Se a entrada estiver classificada, você poderá usar o uniq:
<infile cut -d' ' -f1 | uniq -c
Caso contrário, classifique-o primeiro:
<infile cut -d' ' -f1 | sort -n | uniq -c
Resultado:
3113252
A saída é trocada em comparação com os seus requisitos, você pode usar awk '{ print $2, $1 }'para alterar isso.
1331522
Há também o idioma awk, que não requer entrada classificada:
awk '{h[$1]++}; END { for(k in h) print k, h[k] }'
Resultado:
1352231
Como a saída aqui vem de um hash, ela não será ordenada, passe para sort -nse for necessário:
awk '{h[$1]++} END { for(k in h) print k, h[k] }'| sort -n
Se você estiver usando o GNU awk, poderá fazer a classificação no awk:
awk '{h[$1]++} END { n = asorti(h, d, "@ind_num_asc"); for(i=1; i<=n; i++) print d[i], h[d[i]] }'
você poderia explicar o código ??? awk '{h [$ 1] ++} END {para (k em h) imprima k, h [k]}' | sort -n
Arash
3
@arashams: o {h[$1]++}bloco é avaliado para cada linha. hé um hash e $1é a primeira coluna e usada como a chave para h. Portanto, isso calcula a frequência com que os únicos $1são vistos. O ENDbloco é executado no final da entrada e imprime as chaves e as notas. sort -nclassifica a saída numericamente.
Respostas:
Se a entrada estiver classificada, você poderá usar o uniq:
Caso contrário, classifique-o primeiro:
Resultado:
A saída é trocada em comparação com os seus requisitos, você pode usar
awk '{ print $2, $1 }'
para alterar isso.Há também o idioma awk, que não requer entrada classificada:
Resultado:
Como a saída aqui vem de um hash, ela não será ordenada, passe para
sort -n
se for necessário:Se você estiver usando o GNU awk, poderá fazer a classificação no awk:
Nos dois últimos casos, a saída é:
fonte
{h[$1]++}
bloco é avaliado para cada linha.h
é um hash e$1
é a primeira coluna e usada como a chave parah
. Portanto, isso calcula a frequência com que os únicos$1
são vistos. OEND
bloco é executado no final da entrada e imprime as chaves e as notas.sort -n
classifica a saída numericamente.