подсчет количества уникальных строк в двух столбцах

Если вы используете set -aлибо в своем .bashrc, либо в самом файле функций, он пометит все функции для экспорта.

4.3.1 The Set Builtin

-a

Each variable or function that is created or modified is given the export attribute and marked for export to the environment of subsequent commands.

Это может привести к нежелательным результатам, если вы устанавливаете переменные, которые не хотите экспортировать, но вы можете добавить что-то подобное в.bashrc:

set -a
source ~/my_funcs
set +a

1
22.01.2020, 04:53
1 ответ

Вот один из способов. Отсортируйте файл, затем получите количество с помощью uniq -c, затем используйте awk, чтобы изменить порядок полей.

$ sort file.txt | uniq -c | awk '{ print $2,$3,$1 }'
1 1 3
1 2 2
2 1 2
3 1 1
4 1 1
5 2 1
$

И второй способ, использующий чистый awk.

$ awk '{ x[$0]++ } END { for(a in x) { print a,x[a] } }' file.txt
1 1 3
1 2 2
4 1 1
2 1 2
5 2 1
3 1 1
$

Третий способ, perl. Немного хакерский/длинный, так что ждите, пока кто-нибудь продемонстрирует более элегантный подход.

$ perl -nle '$a{$_}++;END{for(keys %a) { print $_," ",$a{$_} } }' <file.txt
3 1 1
1 2 2
5 2 1
1 1 3
2 1 2
4 1 1
$
3
27.01.2020, 23:22

Теги

Похожие вопросы