Подсчет количества трехзначных чисел в текстовом файле

У меня есть текстовый файл с сотнями трехзначных чисел.
Например:

 0  2  3
 0  2  3
 0  2  9
 0  3  9
 0  9  2
 0  9  2
 0  9  9
 1  2  2
 1  2  2
 1  2  2
 1  2  9
 1  2  9
 1  3  3
 1  9  2
 1  9  2
 1  9  2
 1  9  3
 1  9  9
 1  9  9
 1  9  9
 1  9  9
 2  0  2
 2  0  3
 2  0  9
 2  1  2
 2  1  2
 2  1  3
 2  1  9
 2  1  9
 2  2  4
 2  2  5
 2  2  5
 2  2  5
 2  2  6
 2  2  6
 2  2  8

Я хочу преобразовать это, чтобы показать, сколько каждого числа в файле выглядит примерно так:

 0  2  3     2
 0  9  2     2
 1  2  2     3
 etc

2 ответа

sort -n numbers.txt | uniq -c | sed -E 's/^( *[0-9]+) (.*)$/\2 \1/' было бы самым простым способом для достижения вашей цели. Это:

  • sort Сначала твои номера, на всякий случай
  • c считает длину каждого uniq ии набор
  • sed s результат, чтобы переместить счет в конец каждой строки

Тот факт, что строки состоят из последовательностей цифр, в значительной степени не имеет значения - если вы не хотите делать арифметику с самими числами, вы можете считать / унифицировать их так же, как любые другие строки, например, используя ассоциативный массив или хеш:

awk '{c[$0]++} END {for (i in c) printf "%s\t%d\n", i, c[i]}' numbers.txt

или же

perl -lnE '$c{$_}++ }{ for $k (keys %c) { say "$k\t$c{$k}" }' numbers.txt
Другие вопросы по тегам