Fatmawati Achmad Zaenuri/Shutterstock
Linuxs rev
Befehl kehrt Textstrings um. Dieser Befehl kann entweder mit bereitgestelltem Text oder einer Datei ausgeführt werden und scheint täuschend einfach zu sein. Aber wie bei vielen Befehlszeilen-Dienstprogrammen zeigt sich seine wahre Leistungsfähigkeit, wenn Sie es mit anderen Befehlen kombinieren.
Die rev
command ist eines dieser einfachen Linux-Dienstprogramme, die auf den ersten Blick etwas seltsam erscheinen. Es führt eine einzige Funktion aus: es kehrt Strings um. Und abgesehen davon, dass Sie eine Schnellhilfeseite ausdrucken können (-h
) und zeigen Sie die Versionsnummer (-V
), es akzeptiert keine Befehlszeilenoptionen.
So, rev
kehrt Saiten um, und das war’s? Keine Variationen oder Optionen? Nun ja und nein. Ja, es hat keine Permutationen, aber nein, das ist kaum alles. Dieses Tutorial zeigt Ihnen, wie Sie es für leistungsstarke Operationen kombinieren können.
Wenn Sie verwenden rev
als Baustein in komplizierteren Befehlssequenzen beginnt es erst richtig seinen Wert zu zeigen. rev
gehört zu einer Gruppe von Befehlen (wie tac
und yes
), die Moderatoren sind. Ihre Nützlichkeit ist leichter zu erkennen, wenn Sie sehen, wie sie die Verwendung anderer Befehle effizienter machen.
Verwenden des rev-Befehls
Wird in der Befehlszeile ohne andere Parameter verwendet, rev
nimmt jede eingegebene Eingabe entgegen, kehrt sie um und druckt sie dann im Terminalfenster aus. Es tut dies so lange, bis Sie zum Beenden Strg + C drücken.
rev

Wenn Sie Text eingeben und die Eingabetaste drücken, wird rev
Geben Sie die Zeichenfolge in umgekehrter Reihenfolge aus – es sei denn, Sie geben ein a . an Palindrom, selbstverständlich.

Übergeben von Text an Rev
Sie können verwenden echo
Text weiterleiten an rev
.
echo one two three | rev

Sie können auch verwenden rev
um den Inhalt einer ganzen Textdatei Zeile für Zeile umzukehren. In diesem Beispiel haben wir eine Datei mit einer Liste von Dateinamen. Die Datei heißt „filelist.txt“.
rev filelist.txt

Jede Zeile wird aus der Datei gelesen, umgekehrt und dann im Terminalfenster ausgegeben.
Kombinieren von rev mit anderen Befehlen
Hier ist ein Beispiel für die Verwendung von Pipes von Eingaben, die aufrufen rev
zweimal.
Dieser Befehl entfernt das letzte Zeichen aus der Textfolge. Dies kann nützlich sein, um Satzzeichen zu entfernen. Wir müssen die verwenden cut
Befehl an den Charakter ausziehen.
echo 'Remove punctuation.' | rev | cut -c 2- | rev

Lass uns das aufschlüsseln.
echo
sendet die Zeichenfolge in den ersten Aufruf an rev
.
rev
dreht die Saite um und leitet sie hinein cut
.
- Die
-c
(Zeichen) Option sagt cut
um eine Zeichenfolge aus der Zeichenfolge zurückzugeben.
- Die
2-
Option sagt cut
um den Zeichenbereich von Zeichen zwei bis zum Ende der Zeile zurückzugeben. Wenn eine zweite Nummer angegeben wurde, wie z 2-5
, würde der Bereich von zwei bis fünf Zeichen reichen. Keine zweite Zahl bedeutet „bis zum Ende der Zeichenfolge“.
- Die umgekehrte Zeichenfolge – abzüglich des ersten Zeichens – wird an . übergeben
rev
wodurch die Zeichenfolge umgekehrt wird, sodass sie wieder in ihrer ursprünglichen Reihenfolge ist.
Da wir das erste Zeichen der Zeichenfolge abgeschnitten haben, haben wir das letzte Zeichen der Zeichenfolge abgeschnitten. Ja, das könntest du mit sed
oder awk
, aber dies ist eine einfachere Syntax.
Das letzte Wort trennen
Wir können einen ähnlichen Trick anwenden, um das letzte Wort der Zeile zurückzugeben.
Der Befehl ähnelt dem letzten: Auch hier verwendet er rev
zweimal. Die Unterschiede liegen in der Art und Weise, wie die cut
Befehl wird verwendet, um Teile des Textes auszuwählen.
echo 'Separate the last word' | rev | cut -d' ' -f1 | rev

Hier ist die Befehlsaufschlüsselung:
echo
sendet die Zeichenfolge in den ersten Aufruf an rev
.
rev
dreht die Saite um und leitet sie hinein cut
.
- Die
-d' '
(Trennzeichen) Option sagt cut
um eine durch ein Leerzeichen getrennte Zeichenfolge zurückzugeben.
- Die
-f1
Option sagt cut
um den ersten Abschnitt der Zeichenfolge das Trennzeichen zurückzugeben. Mit anderen Worten, der erste Teil des Satzes bis zum ersten Leerzeichen.
- Das umgekehrte erste Wort wird an . übergeben
rev
wodurch die Zeichenfolge umgekehrt wird, sodass sie wieder in ihrer ursprünglichen Reihenfolge ist.
Da wir das erste Wort des Strings extrahiert haben, haben wir das letzte Wort des Strings abgeschnitten. Das letzte Wort des Satzes war „Wort“, und es ist für uns ausgedruckt.
Zuschneiden von Inhalten aus Dateien
Nehmen wir an, wir haben eine Datei mit einer Liste von Dateinamen, und die Dateinamen stehen in Anführungszeichen. Wir möchten die Anführungszeichen aus den Dateinamen entfernen.
Schauen wir uns die Datei an:
less filelist.txt

Der Inhalt der Datei wird uns angezeigt in less
.

Mit dem folgenden Befehl können wir die Satzzeichen an beiden Enden jeder Zeile entfernen. Dieser Befehl verwendet beides rev
und cut
zweimal.
rev filelist.txt | cut -c 2- | rev | cut -c 2-

Die Dateinamen sind für uns ohne Anführungszeichen aufgeführt.

Der Befehl gliedert sich wie folgt auf:
rev
kehrt die Zeilen in der Datei um und leitet sie in cut
.
- Die
-c
(Zeichen) Option sagt cut
um eine Folge von Zeichen aus jeder Zeile zurückzugeben.
- Die
2-
Option sagt cut
um den Zeichenbereich von Zeichen zwei bis zum Ende jeder Zeile zurückzugeben.
- Die umgekehrten Zeichenfolgen, abzüglich ihrer ersten Zeichen, werden an . übergeben
rev.
rev
kehrt die Saiten um, sodass sie wieder in ihrer ursprünglichen Reihenfolge sind. Sie sind eingepfiffen cut
ein zweites Mal.
- Die
-c
(Zeichen) Option sagt cut
um eine Folge von Zeichen aus jeder Zeichenfolge zurückzugeben.
- Die
2-
Option sagt cut
um den Zeichenbereich von Zeichen zwei bis zum Ende jeder Zeile zurückzugeben. Dies „springt“ über das führende Anführungszeichen, das in jeder Zeile das erste Zeichen ist.
Viel Rohrleitungen
Hier ist ein Befehl, der eine sortierte Liste jeder Dateierweiterung im aktuellen Verzeichnis zurückgibt. Es verwendet fünf verschiedene Linux-Befehle.
ls | rev | cut -d'.' -f1 | rev | sort | uniq

Der Prozess ist einfach:
ls
listet die Dateien im aktuellen Verzeichnis auf. Diese werden eingespeist rev
.
rev
kehrt die Dateinamen um und leitet sie in cut
.
cut
gibt den ersten Teil jedes Dateinamens bis zu einem Trennzeichen zurück. Die -d'.'
erzählt cut
um den Punkt „.“ zu verwenden. als Trennzeichen. Der Teil der umgekehrten Dateinamen bis zum ersten Punkt sind die Dateierweiterungen. Diese werden eingespeist rev
.
rev
kehrt die Dateierweiterungen in ihre ursprüngliche Reihenfolge um. Sie werden eingespeist sort
.
sort
sortiert die Dateierweiterungen und leitet die Ergebnisse an uniq
.
uniq
gibt eine einzelne Auflistung für jeden Typ einer eindeutigen Dateierweiterung zurück. Beachten Sie, dass der gesamte Dateiname aufgeführt wird, wenn keine Dateierweiterung vorhanden ist (z. B. für das Makefile und die Verzeichnisse Help und gc_help).
Um dem Ganzen den letzten Schliff zu geben, fügen Sie die -c
(count) Befehlszeilenoption zum uniq
Befehl.
ls | rev | cut -d'.' -f1 | rev | sort | uniq -c

Wir erhalten nun eine sortierte Liste der verschiedenen Dateitypen im aktuellen Verzeichnis mit der jeweiligen Anzahl.
Das ist ein ziemlich raffinierter Einzeiler!
DrawroF og ot DrawkcaB gnioG
Manchmal muss man rückwärts gehen, um vorwärts zu kommen. Und im Team kommt man meist am schnellsten voran.
Hinzufügen rev
zu Ihrem Repertoire an Go-to-Befehlen, und Sie werden es bald verwenden, um sonst komplizierte Befehlssequenzen zu vereinfachen.