Der Linux-Befehl look rast durch eine Datei und listet alle Zeilen auf, die mit einem bestimmten Wort oder einer bestimmten Phrase beginnen. Aber achten Sie auf! Es verhält sich auf verschiedenen Linux-Distributionen unterschiedlich. Dieses Tutorial zeigt Ihnen, wie Sie es verwenden.
Inhaltsverzeichnis
Ubuntus Look-Befehl verhält sich anders
Für einen einfachen, aber nützlichen Befehl hat mich der Blick sicherlich auf den Punkt gebracht, als ich diesen Artikel recherchierte. Es gab zwei Probleme: Kompatibilität und Dokumentation.
Dieser Artikel wurde mit Ubuntu, Fedora und Manjaro überprüft. look wurde mit jeder dieser Distributionen gebündelt, was großartig war. Das Problem war, dass das Verhalten nicht bei allen dreien gleich war. Die Ubuntu-Version war ganz anders. Laut der Ubuntu-Manpages, das Verhalten sollte das gleiche sein.
Ich habe es schließlich herausgefunden. look verwendet traditionell a binäre Suche, während der Ubuntu-Look a . verwendet lineare Suche. Die Online-Manpages von Ubuntu für Bionic Beaver (18.04), Cosmic Cuttlefish (18.10) und Disco Dingo (19.04) sagen alle, dass die Ubuntu-Version eine binäre Suche verwendet, was nicht der Fall ist.
Wenn wir einen Blick auf die lokale Ubuntu-Manpage werfen, sehen wir deutlich, dass ihr Aussehen eine lineare Suche verwendet. Es gibt eine Befehlszeilenoption, um eine binäre Suche zu erzwingen. Keine der Versionen in den anderen Distributionen bietet eine Option zur Auswahl zwischen Suchmethoden.
man look
Wenn wir durch die Manpage nach unten scrollen, sehen wir den Abschnitt, der diese Version des Looks mit einer linearen statt einer binären Suche beschreibt.
Die Moral der Geschichte besteht darin, zuerst die lokalen Manpages zu überprüfen.
Lineare Suche versus binäre Suche
Das binäre Suchverfahren ist schneller und effizienter als eine lineare Suche. Das Arbeiten mit großen Dateien macht dies sehr deutlich. Der Nachteil der binären Suche ist, dass Ihre Datei sortiert werden muss. Wenn Sie Ihre Datei nicht sortieren möchten, sortieren Sie eine Kopie davon und verwenden Sie diese dann mit look.
Wir werden dies an anderer Stelle in diesem Artikel demonstrieren. Seien Sie sich nur bewusst, dass Sie auf Fedora, Manjaro und ich erwarte den Großteil der restlichen Linux-Welt eine sortierte Kopie Ihrer Datei erstellen und damit arbeiten müssen.
Wörter installieren
look kann mit jeder beliebigen Textdatei oder mit der lokalen Wörterbuchdatei „words“ arbeiten.
Auf Manjaro müssen Sie die Datei „words“ installieren. Verwenden Sie diesen Befehl:
sudo pacman -Syu words
Look verwenden
Für diesen Artikel arbeiten wir mit einer Textdatei der Edward Lear Gedicht „Die Durcheinander“.
Schauen wir uns den Inhalt mit diesem Befehl an:
less the-jumblies.txt
Hier ist der erste Teil des Gedichts. Beachten Sie, dass wir Ubuntu verwenden, sodass die Datei unsortiert bleibt. Für Fedora und Manjaro würden wir mit einer sortierten Kopie der Datei arbeiten, die wir später in diesem Artikel behandeln werden.
Wenn wir nach Zeilen suchen, die mit dem Wort „Sie“ beginnen, erfahren wir, was die Jumblies gemacht haben.
look They the-jumblies.txt
look antwortet, indem es diese Zeilen auflistet:
Groß-/Kleinschreibung ignorieren
Um Unterschiede zwischen Groß- und Kleinschreibung zu ignorieren, verwenden Sie die Option -f (Groß-/Kleinschreibung ignorieren). Wir haben wieder „sie“ als Suchwort verwendet, aber diesmal in Kleinbuchstaben.
look -f they the-jumblies.txt
Diesmal enthalten die Ergebnisse eine zusätzliche Zeile.
Die Zeile, die mit „THEY“ beginnt, wurde im letzten Ergebnissatz übersehen, da sie nur in Großbuchstaben geschrieben ist und nicht mit unserem Suchbegriff „They“ übereinstimmt.
Das Ignorieren der Groß-/Kleinschreibung ermöglicht es look, sie in die Ergebnisse einzubeziehen.
Look mit einer sortierten Datei verwenden
Wenn Ihre Linux-Distribution eine Version von look hat, die dem traditionellen Verhalten einer binären Suche folgt, müssen Sie Ihre Datei entweder sortieren oder mit einer sortierten Kopie davon arbeiten.
Lassen Sie uns den Befehl wiederholen, um nach „Sie“ zu suchen, diesmal jedoch auf Manjaro.
Wie Sie sehen, wurden keine Ergebnisse zurückgegeben. Aber wir wissen, dass das Gedicht Zeilen enthält, die mit dem Wort „Sie“ beginnen.
Lassen Sie uns eine sortierte Kopie der Datei erstellen. Wenn Sie die Optionen -f (Groß-/Kleinschreibung ignorieren) oder -d (nur alphanumerische Zeichen und Leerzeichen) mit look verwenden, müssen Sie diese beim Sortieren der Datei verwenden.
Mit der Option -o (Ausgabe) können Sie den Namen der Datei angeben, zu der die sortierten Zeilen hinzugefügt werden sollen. In diesem Beispiel ist es „sorted.txt“.
sort -f -d the-jumblies.txt -o sorted.txt
Schauen wir uns die Datei sortiert.txt an und verwenden dann die Optionen -f und -d.
Jetzt erhalten wir die erwarteten Ergebnisse.
Berücksichtigen Sie nur Leerzeichen und alphanumerische Zeichen
Um den Blick zu erwecken, ignoriere alles, was kein ist alphanumerisches Zeichen oder ein Leerzeichen verwenden Sie die Option -d (alphanumerisch).
Mal sehen, ob es Wörter gibt, die mit „Oh“ beginnen.
look -f oh the-jumblies.txt
Es werden keine Ergebnisse von Look zurückgegeben.
Versuchen wir es noch einmal und sagen Sie look, dass alles außer alphanumerischen Zeichen und Leerzeichen ignoriert werden soll. Das bedeutet, dass Zeichen und Symbole wie Satzzeichen ignoriert werden.
look -f -d oh the-jumblies.txt
Diesmal erhalten wir ein Ergebnis. Wir haben diese Zeile vorher nicht gefunden, weil die Anführungszeichen und das Ausrufezeichen die Suche verwirrt haben.
Angeben des Abschlusszeichens
Sie können look anweisen, ein bestimmtes Zeichen als Abschlusszeichen zu verwenden. Als Abschlusszeichen werden in der Regel Leerzeichen und Zeilenende verwendet.
Mit der Option -t (Zeichen beenden) können wir das Zeichen angeben, das wir verwenden möchten. In diesem Beispiel verwenden wir das Apostroph-Zeichen. Wir müssen es mit einem umgekehrten Schrägstrich zitieren, damit der Look weiß, dass wir keinen String öffnen.
Wir zitieren den Suchbegriff auch, weil er ein Leerzeichen enthält. Wir suchen nach zwei Wörtern.
look -f -t ' "they call" the-jumblies.txt
Die Ergebnisse stimmen mit dem Suchbegriff überein, abgeschlossen durch den Apostroph, den wir als Abschlusszeichen verwendet haben.
Look ohne Datei verwenden
Wenn Sie in der Befehlszeile keinen Dateinamen angeben, verwenden Sie die wortdatei.
Der Befehl:
gibt diese Ergebnisse:
Dies sind alle Wörter in der Datei, die mit dem Wort „Kreis“ beginnen.
suchen Sie nicht weiter
Das ist alles, was es zu suchen gibt.
Es ist ziemlich einfach, wenn Sie wissen, dass es bei verschiedenen Linux-Distributionen unterschiedliche Verhaltensweisen gibt, und Sie haben herausgefunden, ob Ihre Version eine binäre oder lineare Suche verwendet.