Wie kann ich doppelte Zeilen entfernen?
Ein weiterer Befehl, der oft mit sort
verwendet wird, ist uniq
,
dessen Aufgabe es ist, doppelte Zeilen zu entfernen.
Um genau zu sein,
werden benachbarte doppelte Zeilen entfernt.
Wenn eine Datei enthält:
2017-07-03
2017-07-03
2017-08-03
2017-08-03
dann wird uniq
produzieren:
2017-07-03
2017-08-03
aber wenn es enthält:
2017-07-03
2017-08-03
2017-07-03
2017-08-03
dann wird uniq
alle vier Zeilen ausdrucken.
Der Grund dafür ist, dass uniq
für die Arbeit mit sehr großen Dateien ausgelegt ist.
Um nicht benachbarte Zeilen aus einer Datei zu entfernen,
es müsste die gesamte Datei im Speicher behalten
(oder zumindest,
alle bisher gesehenen einzigartigen Linien).
Indem du nur benachbarte Duplikate entfernst,
es muss nur die letzte eindeutige Zeile im Speicher behalten.
Diese Übung ist Teil des Kurses
Einführung in die Shell
Anleitung zur Übung
Schreibe eine Pipeline zu:
- hole die zweite Spalte von
seasonal/winter.csv
, - das Wort "Zahn" aus der Ausgabe entfernen, damit nur die Zahnnamen angezeigt werden,
- die Ausgabe so sortieren, dass alle Vorkommen eines bestimmten Zahnnamens nebeneinander liegen; und
- zeige jeden Zahnnamen einmal an, zusammen mit der Anzahl, wie oft er vorkommt.
Der Beginn deiner Pipeline ist derselbe wie bei der vorherigen Übung:
cut -d , -f 2 seasonal/winter.csv | grep -v Tooth
Erweitere sie um den Befehl sort
und verwende uniq -c
, um einzelne Zeilen mit einer Zählung der Häufigkeit ihres Auftretens anzuzeigen, anstatt uniq
und wc
zu verwenden.
Interaktive Übung zum Anfassen
Setzen Sie die Theorie mit einer unserer interaktiven Übungen in die Tat um
