Connect with us

Wie man

So verwenden Sie den uniq-Befehl unter Linux

So verwenden Sie Curl zum Herunterladen von Dateien über die Linux-Befehlszeile

Fatmawati Achmad Zaenuri/Shutterstock

Das Linux uniq 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 uniq 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 uniq command ist perfekt für diejenigen im zielstrebigen Lager, das darauf ausgelegt ist, eine Sache zu tun und es gut zu machen. Deshalb ist es auch besonders gut geeignet, um mit Pipes zu arbeiten und seine Rolle in Befehlspipelines zu übernehmen. Einer seiner häufigste Mitarbeiter ist sort da uniq muss eine sortierte Eingabe haben, an der gearbeitet werden kann.

Lass es uns anzünden!

Uniq ohne Optionen ausführen

Wir haben eine Textdatei mit den Texten zu Robert Johnsons Lied . Mal sehen, was uniq macht daraus.

Wir geben Folgendes ein, um die Ausgabe an weiterzuleiten less:

uniq dust-my-broom.txt | less

Wir bekommen den gesamten Song, einschließlich doppelter Zeilen, in less:

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

Richtig – denn das ist die erste Eigenart. Wenn du läufst uniq ohne Optionen verhält es sich so, als ob Sie die -u (eindeutige Zeilen) Option. Das sagt uniq um nur die eindeutigen Zeilen aus der Datei zu drucken. Der Grund, warum Sie doppelte Zeilen sehen, ist, dass z uniq um eine Linie als Duplikat zu betrachten, muss sie neben ihrem Duplikat liegen, wo sort kommt herein.

Wenn wir die Datei sortieren, gruppiert sie die doppelten Zeilen und uniq behandelt sie als Duplikate. Wir verwenden sort auf der Datei, leiten Sie die sortierte Ausgabe in uniq, und leiten Sie dann die endgültige Ausgabe in less.

Dazu geben wir Folgendes ein:

sort dust-my-broom.txt | uniq | less

Eine sortierte Liste von Zeilen erscheint in less.

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.

Lass uns verwenden sort erneut und leiten Sie die Ausgabe in eine neue Datei um. Auf diese Weise müssen wir nicht verwenden sort bei jedem Befehl.

Wir geben folgenden Befehl ein:

sort dust-my-broom.txt > sorted.txt

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

Duplikate zählen

Du kannst den … benutzen -c (count) Option, um zu drucken, wie oft jede Zeile in einer Datei vorkommt.

Geben Sie den folgenden Befehl ein:

uniq -c sorted.txt | less

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 möchten, dass die Ausgabe in numerischer Reihenfolge sortiert wird, können Sie die Ausgabe von uniq hinein sort. In unserem Beispiel verwenden wir die -r (rückwärts) und -n (numerische Sortierung) Optionen, und leiten Sie die Ergebnisse an less.

Wir geben folgendes ein:

uniq -c sorted.txt | sort -rn | less

Die Liste wird 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 -d (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 -d sorted.txt

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 von uniq um die Auflistung kosmetisch auszugleichen.

Wir können auch kombinieren die -d (wiederholt) und -c (zählen) Sie die Optionen und leiten Sie die Ausgabe durch sort. Dadurch erhalten wir eine sortierte Liste der Zeilen, die mindestens zweimal vorkommen.

Geben Sie Folgendes ein, um diese Option zu verwenden:

uniq -d -c sorted.txt | sort -rn

Auflisten aller duplizierten Zeilen

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

Um diese Option zu verwenden, geben Sie Folgendes ein:

uniq -D sorted.txt | less

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

Wenn Sie das verwenden --group Option druckt es jede duplizierte Zeile mit einer Leerzeile entweder vor (prepend) oder nach jeder Gruppe (append) oder beides vor und nach (both) jede Gruppe.

Wir verwenden append als unseren Modifikator, also geben wir Folgendes ein:

uniq --group=append sorted.txt | less

Die Gruppen sind zur besseren Lesbarkeit durch Leerzeilen getrennt.

Überprüfen einer bestimmten Anzahl von Zeichen

Standardmäßig, uniq 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 -w (Zeichen prüfen) Option.

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

uniq -w 3 --group=append sorted.txt | less

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 sag, du brauchst uniq 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 uniq Um seine Vergleichsprüfungen bei Zeichen drei zu starten, können wir die -s (Zeichen überspringen), indem Sie Folgendes eingeben:

uniq -s 3 -d -c numbered.txt

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 werden die verwenden -f (Felder) Option zu sagen uniq welche Felder ignoriert werden sollen.

Wir geben Folgendes ein, um es zu erzählen uniq um das erste Feld zu ignorieren:

uniq -f 1 -d -c  numbered.txt

Wir bekommen die gleichen Ergebnisse, die wir gemacht haben, als wir es gesagt haben uniq um drei Zeichen am Anfang jeder Zeile zu überspringen.

Fall ignorieren

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

Sehen Sie sich beispielsweise die Ausgabe des folgenden Befehls an:

uniq -d -c sorted.txt | sort -rn

Die Zeilen „Ich glaube, ich werde meinen Besen abstauben“ und „Ich glaube, ich werde meinen Besen abstauben“ werden aufgrund des Unterschieds zwischen Groß- und Kleinschreibung beim „B“ in „glauben“ nicht als Duplikate behandelt.

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

uniq -d -c -i sorted.txt | sort -rn

Die Zeilen werden jetzt als Duplikate behandelt und gruppiert.

Linux stellt Ihnen eine Vielzahl spezieller Dienstprogramme zur Verfügung. Wie viele von ihnen, uniq 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.

Continue Reading
Click to comment

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Tendencia