Odpowiedzi:
Rozgryzłem to; jedną z uniq
opcji jest -c
, dla „wierszy prefiksu według liczby wystąpień”:
$ uniq -c
sort | uniq
A \ A \ A \ B \ A \ CC
, wynik po prostu uniq -c
pokaże, A 3
a później pokaże A 1
. Sortowanie w pierwszej kolejności zagwarantuje, że wszystkie identyczne linie zostaną zgrupowane razem
Właśnie przyszedłem tutaj z podobnym problemem. Z tego udało mi się zebrać nieco bardziej zaawansowane polecenie, które, mam nadzieję, będzie przydatne dla innych.
Jak powiedział Steven D w powyższych komentarzach, uniq
liczy tylko sąsiednie powtarzające się linie, więc najpierw musisz posortować linie. Następnie znajdujemy unikalne linie, a następnie sortujemy ponownie, aby najczęściej występujące linie były na górze.
sort file.txt | uniq -c | sort -nr > output.txt
Dane wyjściowe są przekierowywane do pliku output.txt
. Jeśli chcesz tylko wyświetlić wyniki w wierszu poleceń, usuń przekierowanie i zmień ostatnie polecenie na sort -n
tak, aby najczęstsza linia znajdowała się na dole, tj. Zdecydowanie nadal na ekranie.
cat file.txt | sort
just sort file.txt
. :)
cat
czegoś bardziej interesującego. Ponieważ wiesz, nie ma cat
.
< file.txt sort | uniq -c
. Jest to łatwe do edycji i wciąż unika niepotrzebnych cat
.
uniq -c filename.txt | sed 's/[^0-9]*\\([0-9]\+\\) \\(.*\\)/\2 \1/'