Ändern Sie einfach Ihren awk-Befehl in die Spalte, die Sie ausführen möchten, um doppelte Zeilen basierend auf (in Ihrem Fall die dritte Spalte) zu entfernen:
awk '!seen[$3]++' filename
Dieser Befehl gibt an, awk
welche Zeilen gedruckt werden sollen. Die Variable $3
enthält den gesamten Inhalt von Spalte 3, und eckige Klammern stehen für den Array-Zugriff. Für jede dritte Spalte der Zeile im Dateinamen wird der Knoten des genannten Arrays seen
inkrementiert und die Zeile gedruckt, wenn der Inhalt dieses Knotens (Spalte3 !
) zuvor nicht ( ) festgelegt wurde.
Der obige awk
Befehl funktioniert, wenn Ihre Spalten in der Eingabedatei mit space
oder Tab
zwischen sich selbst getrennt sind. Wenn die Spalten mit etwas anderem getrennt sind, müssen Sie angeben, dass awk mit der entsprechenden -F
Option aktiviert werden soll . Beispiel: Wenn alle Spalten durch Komma ( ,
) getrennt sind und Zeilen basierend auf der dritten Spalte entfernt werden sollen, verwenden Sie die -F','
Option.
awk -F',' '!seen[$3]++' filename
-u
würde nur doppelte Zeilen entfernen , keine doppelten Schlüssel ... aber ich liege falsch.