2016-11-27 5 views
0

У меня есть текстовый файл 2 поля, разделенные:Как можно использовать UNIX команду подсчета

i3583063: b3587412
i3583064: b3587412
i3583065: b3587412
i3583076: b3587421
i3583077: b3587421
i3583787 : b3587954
i3584458: b3588416
i3584459: b3588416
i3584460: b3588416
i358446 1: b3588416
i3584462: b3588416
i3584463: b3588416
i3584464: b3588416
i3584465: b3588416

поле 1 всегда уник, но не поле 2 он может быть повторен. Как я могу определить первое, второе третье и т. Д. Появление поля 2? Могу ли я использовать счет?

Благодаря

ответ

1

Я не знаю, если я когда-либо слышал о стандартной Unix count утилиты, но вы можете сделать это с помощью Awk. Вот скрипт Awk, который добавляет счетчик в третьей колонке:

awk -F: 'BEGIN {OFS=":"} {$3=++count[$2]; print}' input.txt 

Он должен генерировать вывод:

i3583063:b3587412:1 
i3583064:b3587412:2 
i3583065:b3587412:3 
i3583076:b3587421:1 
i3583077:b3587421:2 
i3583787:b3587954:1 
i3584458:b3588416:1 
i3584459:b3588416:2 
i3584460:b3588416:3 
i3584461:b3588416:4 
i3584462:b3588416:5 
i3584463:b3588416:6 
i3584464:b3588416:7 
i3584465:b3588416:8 

Сердце сценария {$3=++count[$2]; print} просто увеличивает счетчик проиндексированы на величину второго поле, сохраняет его в новом третьем поле и затем выводит строку с этим новым полем. Awk - отличный маленький язык и все еще стоит изучать.

+0

благодарит это было очень полезно – user7011225

0

Вы можете использовать команду sort с параметром -u. Таким образом, избыточные линии удаляются.

sort -u filename.txt 

Если вы хотите посчитать вхождения

sort -u filename.txt | wc -l 
Смежные вопросы