Найти частоту уникальных имен

Предполагая, что пути не содержат символов новой строки,

$ sed 's/^.*[[:blank:]]"//; s/"$//' <file
/user/bin/share
/home/user/.local
/root/

Код sedсначала удаляет все в каждой строке до первого символа "включительно, которому предшествует пробел (или табуляция ). Затем он удаляет "в конце.

Это позволяет путям содержать пробелы и встроенные символы ", но не комбинацию пробел+".

0
04.01.2021, 19:31
1 ответ

В зависимости от количества уникальных пользователей вы можете позволить awkвыполнять тяжелую работу (, подсчитывая повторяющиеся записи по мере их чтения, без сортировки ), а затем сортировать результат. Это должно работать быстрее (, но вам все равно придется все распаковывать, а это занимает некоторое время):

$ for subfolder in folder; do gunzip -rc $subfolder | awk -F, '{l[$1]++} END {for (i in l) {print l[i],i}}' | sort -rn | head;done

Для справки, вы не можете заставить его работать быстрее, чем:

$ for subfolder in folder; do gunzip -rc $subfolder > /dev/null;done
1
18.03.2021, 22:38

Теги

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