Poniższe awk
polecenie usuwa wszystkie zduplikowane linie, jak wyjaśniono tutaj :
awk '!seen[$0]++'
Jeśli tekst zawiera puste linie, wszystkie puste linie oprócz jednej zostaną usunięte.
Jak mogę zachować wszystkie puste linie, jednocześnie usuwając wszystkie niepuste duplikaty, używając tylko awk
? Dołącz także krótkie wyjaśnienie.
Wszystko, co musisz zrobić, to najpierw sprawdzić pustą (naprawdę pustą lub tylko pustą) linię.
źródło
Oto inne
awk
rozwiązanie, podobne do odpowiedzi @ Thora, mniej zwięzłe, ale bardziej wydajne:Dzięki temu sprawdzamy tylko, czy
a[$0]
istnieje, czy nie. Jeśli nie, zainicjuj go, a następnie wydrukuj. W tym przypadku nie mamy żadnego odniesienia ani przypisania,a[$0]
jeśli istniało.źródło