Odpowiedzi:
Do tego uniqsłuży standardowe polecenie.
uniq your-file
Zauważ, że niektóre uniqimplementacje, takie jak GNU uniq, dadzą ci pierwszą z sekwencji wierszy, które sortują to samo (gdzie strcoll()zwraca 0), w przeciwieństwie do identycznych bajtów po bajcie (gdzie memcmp()lub strcmp()zwraca 0). Aby wymusić porównanie bajt-bajt bez względu na uniqimplementację, możesz wymusić ustawienie regionalne za Cpomocą:
LC_ALL=C uniq your-file
Vim potrafi to ładnie osiągnąć:
:g/\v^(.*\n)\1/d
Lub jeśli wolisz używać vima jako narzędzia wiersza poleceń, możesz to zrobić jako
vim file -c "g/\v^(.*\n)\1/d" -c "wq"
W ten sposób nie będziesz musiał walczyć z wychodzącym vimem później;)
Wyjaśnienie:
:g/
Na wszystkich liniach, które pasują do tego wyrażenia regularnego ...
\v^(.*\n)\1
Każda linia, po której następuje sama ...
/d
uruchom polecenie d elete (usuń bieżący wiersz). Należy -c "wq"zapisać zmiany i wyjść.