Найти наиболее частую строку в файле в bash
Предположим, у меня есть файл, подобный следующему:
Abigail 85
Kaylee 25
Kaylee 25
kaylee
Brooklyn
Kaylee 25
kaylee 25
Я хотел бы найти наиболее повторяющуюся строку, на выходе должна быть только строка.
я пробовал
sort list | uniq -c
но мне нужен чистый вывод, просто самая повторяющаяся строка (в этом примере Kaylee 25
).
4 ответа
Решение
Кайдзен ~
$ sort zlist | uniq -c | sort -r | head -1| xargs | cut -d" " -f2-
Kaylee 25
это помогает?
ИМХО, ни один из этих ответов не отсортирует результаты правильно. Причина в том, что без -n
, вариант будет сортировать вот так1 10 11 2 3 4
"и т. д. вместо"1 2 3 4 10 11 12
"Итак, добавьте -n
вот так:
sort zlist | uniq -c | sort -n -r | head -1
Затем вы, конечно, можете передать это либо xargs, либо sed, как описано ранее.
awk -
awk '{a[$0]++; if(m<a[$0]){ m=a[$0];s[m]=$0}} END{print s[m]}' t.lis
$ uniq -c list | sort -r | head -1 | awk '{$1=""}1'
Kaylee 25
Это то, что вы ищете?