So verwenden Sie den uniq-Befehl unter Linux

Eine Shell-Eingabeaufforderung auf einem Linux-Computer.

Fatmawati Achmad Zaenuri/Shutterstock



Das Linux |_+_| Der Befehl durchsucht Ihre Textdateien und sucht nach eindeutigen oder doppelten Zeilen. In diesem Handbuch behandeln wir seine Vielseitigkeit und Funktionen sowie wie Sie dieses nützliche Dienstprogramm optimal nutzen können.

Finden übereinstimmender Textzeilen unter Linux

Die |_+_| Befehl ist schnell, flexibel und super in dem was es tut . Wie viele Linux-Befehle hat es jedoch ein paar Macken – was in Ordnung ist, solange Sie sie kennen. Wer den Sprung ohne Insider-Know-how wagt, kann sich bei den Ergebnissen durchaus am Kopf kratzen. Wir werden auf diese Macken hinweisen, während wir gehen.





Die |_+_| command ist perfekt für diejenigen im zielstrebigen Lager, das darauf ausgelegt ist, eine Sache zu tun und es gut zu machen. Daher auch besonders gut geeignet für mit Rohren arbeiten und spielen seine Rolle in Befehlspipelines. Einer seiner häufigste Mitarbeiter ist |_+_| weil |_+_| muss eine sortierte Eingabe haben, an der gearbeitet werden kann.

Lass es uns anzünden!



VERBUNDEN: Wie man Pipes unter Linux verwendet

Uniq ohne Optionen ausführen

Wir haben eine Textdatei mit den Texten zu Robert Johnsons Lied Ich glaube, ich werde meinen Besen abstauben . Mal sehen was |_+_| macht daraus.

Wir geben Folgendes ein, um die Ausgabe in |_+_| zu leiten:



uniq

Wir erhalten den gesamten Song, einschließlich doppelter Zeilen, in |_+_|:

Anzeige

Das scheinen weder die eindeutigen Zeilen noch die doppelten Zeilen zu sein.

Richtig – denn das ist die erste Eigenart. Wenn du |_+_| . läufst ohne Optionen verhält es sich so, als ob Sie |_+_| . verwendet hätten (eindeutige Linien) Option. Dies sagt |_+_| um nur die eindeutigen Zeilen aus der Datei zu drucken. Der Grund, warum Sie doppelte Zeilen sehen, ist, dass für |_+_| um eine Linie als Duplikat zu betrachten, muss sie an ihr Duplikat angrenzen, also |_+_| kommt herein.

Wenn wir die Datei sortieren, gruppiert sie die doppelten Zeilen und |_+_| behandelt sie als Duplikate. Wir verwenden |_+_| der Datei, leiten Sie die sortierte Ausgabe an |_+_| und dann die endgültige Ausgabe an |_+_| weiter.

Dazu geben wir Folgendes ein:

uniq

Eine sortierte Liste von Zeilen erscheint in |_+_|.

Die Zeile, ich glaube, ich werde meinen Besen abstauben, kommt im Song definitiv mehr als einmal vor. Tatsächlich wird es innerhalb der ersten vier Zeilen des Songs zweimal wiederholt.

Warum wird es in einer Liste eindeutiger Zeilen angezeigt? Da eine Zeile zum ersten Mal in der Datei erscheint, ist sie eindeutig; nur die nachfolgenden Einträge sind Duplikate. Sie können sich das so vorstellen, als würden Sie das erste Vorkommen jeder eindeutigen Zeile auflisten.

Verwenden wir |_+_| erneut und leiten Sie die Ausgabe in eine neue Datei um. Auf diese Weise müssen wir |_+_| . nicht verwenden bei jedem Befehl.

Wir geben folgenden Befehl ein:

uniq

Jetzt haben wir eine vorsortierte Datei, mit der wir arbeiten können.

Duplikate zählen

Sie können die |_+_| (count) Option, um zu drucken, wie oft jede Zeile in einer Datei vorkommt.

Geben Sie den folgenden Befehl ein:

sort

Anzeige

Jede Zeile beginnt mit der Häufigkeit, mit der diese Zeile in der Datei vorkommt. Sie werden jedoch feststellen, dass die erste Zeile leer ist. Dies sagt Ihnen, dass die Datei fünf leere Zeilen enthält.

Wenn Sie die Ausgabe in numerischer Reihenfolge sortieren möchten, können Sie die Ausgabe von |_+_| . eingeben in |_+_|. In unserem Beispiel verwenden wir |_+_| (rückwärts) und |_+_| (numerische Sortierung) und leiten Sie die Ergebnisse in |_+_|.

Wir geben folgendes ein:

uniq

Die Liste ist in absteigender Reihenfolge sortiert, basierend auf der Häufigkeit des Auftretens jeder Zeile.

Nur doppelte Zeilen auflisten

Wenn Sie nur die Zeilen sehen möchten, die sich in einer Datei wiederholen, können Sie die |_+_| (wiederholt) Option. Egal wie oft eine Zeile in einer Datei dupliziert wird, sie wird nur einmal aufgeführt.

Um diese Option zu verwenden, geben wir Folgendes ein:

uniq

Die duplizierten Zeilen werden für uns aufgelistet. Sie werden die Leerzeile oben bemerken, was bedeutet, dass die Datei doppelte Leerzeilen enthält – es ist kein Leerzeichen, das von |_+_| . gelassen wird um die Auflistung kosmetisch auszugleichen.

Anzeige

Wir können auch die |_+_| . kombinieren (wiederholt) und |_+_| (count)-Optionen und leiten Sie die Ausgabe durch |_+_|. Dadurch erhalten wir eine sortierte Liste der Zeilen, die mindestens zweimal vorkommen.

Geben Sie Folgendes ein, um diese Option zu verwenden:

less

Auflisten aller duplizierten Zeilen

Wenn Sie eine Liste aller duplizierten Zeilen sowie einen Eintrag für jedes Auftreten einer Zeile in der Datei anzeigen möchten, können Sie die |_+_| (alle doppelten Zeilen) Option.

Um diese Option zu verwenden, geben Sie Folgendes ein:

less

Die Auflistung enthält einen Eintrag für jede duplizierte Zeile.

Wenn Sie |_+_| . verwenden Option druckt sie jede duplizierte Zeile mit einer Leerzeile entweder vor (|_+_|) oder nach jeder Gruppe (|_+_|) oder sowohl vor als auch nach (|_+_|) jeder Gruppe.

Wir verwenden |_+_| als unseren Modifikator, also geben wir Folgendes ein:

uniq

Die Gruppen sind zur besseren Lesbarkeit durch Leerzeilen getrennt.

Überprüfen einer bestimmten Anzahl von Zeichen

Standardmäßig ist |_+_| prüft die gesamte Länge jeder Zeile. Wenn Sie die Prüfungen jedoch auf eine bestimmte Anzahl von Zeichen beschränken möchten, können Sie die |_+_| (Zeichen prüfen) Option.

Anzeige

In diesem Beispiel wiederholen wir den letzten Befehl, beschränken die Vergleiche jedoch auf die ersten drei Zeichen. Dazu geben wir folgenden Befehl ein:

-u

Die Ergebnisse und Gruppierungen, die wir erhalten, sind sehr unterschiedlich.

Alle Zeilen, die mit I b beginnen, werden gruppiert, da diese Teile der Zeilen identisch sind und daher als Duplikate betrachtet werden.

Ebenso werden alle Zeilen, die mit I'm beginnen, als Duplikate behandelt, auch wenn der Rest des Textes anders ist.

Ignorieren einer bestimmten Anzahl von Zeichen

Es gibt einige Fälle, in denen es von Vorteil sein kann, eine bestimmte Anzahl von Zeichen am Anfang jeder Zeile zu überspringen, z. B. wenn Zeilen in einer Datei nummeriert sind. Oder sagen Sie, Sie brauchen |_+_| um einen Zeitstempel zu überspringen und die Zeilen ab Zeichen sechs statt ab dem ersten Zeichen zu überprüfen.

Unten ist eine Version unserer sortierten Datei mit nummerierten Zeilen.

Wenn wir wollen |_+_| um seine Vergleichsprüfungen bei Zeichen drei zu starten, können wir |_+_| . verwenden (Zeichen überspringen), indem Sie Folgendes eingeben:

uniq

Anzeige

Die Zeilen werden als Duplikate erkannt und korrekt gezählt. Beachten Sie, dass die angezeigten Zeilennummern die des ersten Vorkommens jedes Duplikats sind.

Sie können auch Felder (eine Reihe von Zeichen und einige Leerzeichen) anstelle von Zeichen überspringen. Wir verwenden die |_+_| (Felder) Option um |_+_| . zu sagen welche Felder ignoriert werden sollen.

Wir geben Folgendes ein, um |_+_| . zu sagen um das erste Feld zu ignorieren:

uniq

Wir erhalten die gleichen Ergebnisse wie bei |_+_| um drei Zeichen am Anfang jeder Zeile zu überspringen.

Fall ignorieren

Standardmäßig ist |_+_| ist die Groß-/Kleinschreibung. Wenn derselbe Buchstabe mit einer Kappe bedeckt und in Kleinbuchstaben angezeigt wird, wird |_+_| hält die Zeilen für unterschiedlich.

Sehen Sie sich beispielsweise die Ausgabe des folgenden Befehls an:

sort

Anzeige

Die Zeilen, die ich glaube, ich werde meinen Besen abstauben und ich glaube, ich werde meinen Besen abstauben, werden aufgrund des Unterschieds in der Groß-/Kleinschreibung auf dem B im Glauben nicht als Duplikate behandelt.

Wenn wir die |_+_| . einschließen (Groß-/Kleinschreibung ignorieren) werden diese Zeilen jedoch als Duplikate behandelt. Wir geben folgendes ein:

uniq

Die Zeilen werden jetzt als Duplikate behandelt und gruppiert.


Linux stellt Ihnen eine Vielzahl spezieller Dienstprogramme zur Verfügung. Wie viele von ihnen, |_+_| ist kein Werkzeug, das Sie jeden Tag verwenden werden.

Aus diesem Grund besteht ein großer Teil der Linux-Kenntnisse darin, sich daran zu erinnern, welches Tool Ihr aktuelles Problem löst und wo Sie es wieder finden können. Wenn Sie jedoch üben, sind Sie auf dem besten Weg.

Oder Sie können jederzeit nach How-To Geek suchen – wahrscheinlich haben wir einen Artikel dazu.

Linux-Befehle
Dateien Teer · pv · Katze · tac · chmod · Griff · unterschied · sed · Mit · Mann · geschoben · popd · fsck · Testdisk · seq · fd · pandoc · CD · $PFAD · awk · beitreten · jq · falten · einzigartig · Journalctl · Schwanz · Zustand · ls · fstab · rauswerfen · weniger · chgrp · chown · rev · suchen · Saiten · Typ · umbenennen · Postleitzahl · entpacken · montieren · ummount · Installieren · fdisk · mkfs · rm · rmdir · rsync · df · gpg · wir · Nano · mkdir · von · ln · Patch · Konvertieren · rclon · Fetzen · SRM
Prozesse alias · Bildschirm · oben · nett · renice · Fortschritt · strace · System · tmux · chsh · Geschichte · beim · Charge · kostenlos · die · dmesg · Benutzermod · ps · chroot · xargs · tty · kleiner Finger · lsof · vmstat · Auszeit · Mauer · ja · töten · Schlaf · sudo · seine · Zeit · groupadd · Benutzermod · Gruppen · lshw · stilllegen · neu starten · halt · ausschalten · passwd · lscpu · crontab · Datum · bg · fg
Vernetzung netstat · Klingeln · Traceroute · ip · ss · Wer ist · fail2ban · bmon · Sie · Finger · nmap · ftp · Locken · wget · Wer · Wer bin ich · In · iptables · ssh-keygen · ufw

VERBUNDEN: Beste Linux-Laptops für Entwickler und Enthusiasten

WEITER LESEN
  • › Der Computerordner ist 40: Wie Xerox Star den Desktop erstellte
  • › Was ist MIL-SPEC Fallschutz?
  • › So finden Sie Ihr Spotify Wrapped 2021
  • › Funktionen vs. Formeln in Microsoft Excel: Was ist der Unterschied?
  • & rsaquo; Cyber ​​Monday 2021: Die besten Tech-Deals
  • › 5 Websites, die jeder Linux-Benutzer mit einem Lesezeichen versehen sollte
Profilfoto von Dave McKay Dave McKay
Dave McKay benutzte zum ersten Mal Computer, als Lochstreifen in Mode waren, und programmiert seitdem. Nach über 30 Jahren in der IT-Branche ist er heute hauptberuflich Technologiejournalist. Im Laufe seiner Karriere war er als freiberuflicher Programmierer, Leiter eines internationalen Softwareentwicklungsteams, Projektleiter für IT-Services und zuletzt als Datenschutzbeauftragter tätig. Sein Schreiben wurde von howtogeek.com, cloudavvyit.com, itenterpriser.com und opensource.com veröffentlicht. Dave ist ein Linux-Evangelist und Open-Source-Verfechter.
Vollständige Biografie lesen

Interessante Artikel