Jeśli mam plik tekstowy o następującej treści
red apple
green apple
green apple
orange
orange
orange
Czy istnieje polecenie lub skrypt systemu Linux, których mogę użyć, aby uzyskać następujący wynik?
1 red apple
2 green apple
3 orange
linux
text
duplicates
czas na
źródło
źródło
-d
notatkę.uniq -c file
aw przypadku, gdy plik nie jest już posortowany:
sort file | uniq -c
źródło
Spróbuj tego
źródło
źródło
Czy możesz żyć z alfabetyczną, uporządkowaną listą:
?
lub
-u oznacza niepowtarzalność, a niepowtarzalność można osiągnąć tylko poprzez sortowanie.
Rozwiązanie, które zachowuje porządek:
i za pomocą pliku
Dwie ostatnie tylko usuwają duplikaty, które następują natychmiast - co pasuje do twojego przykładu.
Wydrukuje dwa jabłka podzielone przez banana.
źródło
Aby po prostu policzyć:
Aby uzyskać posortowaną liczbę:
EDYTOWAĆ
Aha, to nie było poza granicami słów, moja wina. Oto polecenie używane dla pełnych linii:
źródło
Oto prosty skrypt w Pythonie używający typu Counter . Zaletą jest to, że nie wymaga to sortowania pliku, zasadniczo przy zerowej pamięci:
Wynik:
lub możesz użyć prostego, jednowierszowego:
źródło