Подсчет количества трехзначных чисел в текстовом файле
У меня есть текстовый файл с сотнями трехзначных чисел.
Например:
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