Der folgende awk
Befehl entfernt alle doppelten Zeilen wie hier erklärt :
awk '!seen[$0]++'
Wenn der Text Leerzeilen enthält, werden alle bis auf eine Leerzeile gelöscht.
Wie kann ich alle leeren Zeilen behalten, während ich alle nicht leeren doppelten Zeilen lösche und nur verwende awk
? Bitte fügen Sie auch eine kurze Erklärung bei.
Alles, was Sie tun müssen, ist, zuerst nach einer leeren (wirklich leeren oder nur leeren) Zeile zu suchen.
quelle
Hier ist eine andere
awk
Lösung, die der Antwort von @ Thor ähnelt und weniger präzise, aber effizienter ist:Damit haben wir nur geprüft, ob
a[$0]
es existiert oder nicht. Wenn nicht, initialisieren Sie es und drucken Sie es aus. In diesem Fall haben wir keinen Bezug, Zuordnung zu,a[$0]
falls vorhanden.quelle