Привет арашам! Я видел, как вы недавно задавали очень похожие вопросы, которые все вращаются вокруг одной и той же темы. Я уверен, что сообщество хотело бы помочь вам, но, возможно, вы могли бы показать нам, что вы уже пробовали и где именно вы застряли? Мы требуем, чтобы люди приложили немного усилий, прежде чем задавать свои вопросы - не нужно учиться просто просить других дать вам код для конкретной вещи. Почему бы не сказать нам, что это за фон? Может быть, есть более простой способ выполнить то, что вы хотите, и нам не нужно прибегать к фиктивным примерам с некоторыми абстрактными числами?
Slhck
TNX за вашу помощь. Я работаю с данными bgpdump и анализирую их.
Араш
Ответы:
12
Если вход отсортирован, вы можете использовать uniq:
<infile cut -d' ' -f1 | uniq -c
Если нет, сначала отсортируйте это:
<infile cut -d' ' -f1 | sort -n | uniq -c
Вывод:
3113252
Вывод поменялся по сравнению с вашим требованием, вы можете использовать, awk '{ print $2, $1 }'чтобы изменить это.
1331522
Есть также идиома awk, которая не требует сортированного ввода:
awk '{h[$1]++}; END { for(k in h) print k, h[k] }'
Вывод:
1352231
Поскольку вывод здесь приходит из хеша, он не будет упорядочен, перейдите к нему, sort -nесли это необходимо:
awk '{h[$1]++} END { for(k in h) print k, h[k] }'| sort -n
Если вы используете GNU awk, вы можете выполнить сортировку из awk:
awk '{h[$1]++} END { n = asorti(h, d, "@ind_num_asc"); for(i=1; i<=n; i++) print d[i], h[d[i]] }'
Не могли бы вы объяснить, пожалуйста, код ??? awk '{h [$ 1] ++} END {for (k in h) print k, h [k]}' | sort -n
Arash
3
@arashams: {h[$1]++}блок оценивается для каждой строки. hявляется хешем и $1является первым столбцом и используется в качестве ключа в h. Так что это подсчитывает, как часто $1видны уникальные . ENDБлок выполняется в конце ввода, и печатает ключи и бирки. sort -nсортирует вывод численно.
Ответы:
Если вход отсортирован, вы можете использовать uniq:
Если нет, сначала отсортируйте это:
Вывод:
Вывод поменялся по сравнению с вашим требованием, вы можете использовать,
awk '{ print $2, $1 }'
чтобы изменить это.Есть также идиома awk, которая не требует сортированного ввода:
Вывод:
Поскольку вывод здесь приходит из хеша, он не будет упорядочен, перейдите к нему,
sort -n
если это необходимо:Если вы используете GNU awk, вы можете выполнить сортировку из awk:
В последних двух случаях вывод:
источник
{h[$1]++}
блок оценивается для каждой строки.h
является хешем и$1
является первым столбцом и используется в качестве ключа вh
. Так что это подсчитывает, как часто$1
видны уникальные .END
Блок выполняется в конце ввода, и печатает ключи и бирки.sort -n
сортирует вывод численно.