SED, auch bekannt als Stream Editor, ist ein sehr nützliches Tool. Es wird verwendet, um nach einem bestimmten Wort oder Muster zu suchen und dann eine Operation an diesem Wort oder Muster durchzuführen, oder mit anderen Worten, es umzuwandeln. Unter Windows wird SED auch als „Suchen und Ersetzen“-Funktion bezeichnet. SED ist nativ in Ubuntu enthalten, es muss also nichts installiert werden. In diesem Tutorial zeigen wir Ihnen, wie Sie SED oder Stream Editor verwenden.
Der wichtigste Befehl im SED- oder Stream-Editor ist der „s“-Befehl. Das „s“ steht für Ersatz. Die Syntax lautet wie folgt:
/regexp/replacement/flag
Als Beispiel nehmen wir eine Datei namens „file.txt“. So sieht „file.txt“ aus, wenn Sie ihm folgen:
Lassen Sie uns anhand eines Beispiels veranschaulichen, wie der Befehl „S“ funktioniert:
SED‘S/First/Moon/I’file.txt>moon.txt
Wenn ein Ausdruck wie dieser verwendet wird, bedeutet er:
Gesucht in file.txt
Ersetzen Sie im SED das Wort „first“ nur beim ersten Mal durch „moon“ (d. h. wenn „first“ mehrmals vorkommt, wird nur das erste Mal ersetzt). Dieser Befehl sucht in einer Datei mit dem Namen „file.txt“ und sobald die Ersetzung abgeschlossen ist, werden die Ergebnisse in der Datei „moon.txt“ gespeichert.
So sieht es aus:
Bitte denken Sie daran, bei Bedarf „/“ einzufügen. Wenn „/“ weggelassen wird, akzeptiert SED den Befehl nicht.
Bisher haben wir „erstes Mal“ nur durch das Wort „Begegnung“ ersetzt. Nehmen wir nun an, wir möchten das Wort „Zeile“ (das mehrmals vorkommt – genauer gesagt vier Mal) in der dritten Zeile durch das Wort „Angel“ ersetzen.
Wie zielen wir gezielt auf die dritte Linie ab? Wir verwenden den folgenden Befehl:
SED‘3S/Line/Angel/I’file.txt>angel.txt
Also, was ist hier gerade passiert? Okay, „3“ gibt die Zeilennummer an. Es kommt also zur dritten Zeile. Ersetzen Sie dann „angel.txt“ durch „line“ in der Datei mit dem Namen „file.txt“ und speichern Sie die konvertierte Datei als „angel.txt“.
Was ist, wenn wir die Zeilen „3“ und „4“ ersetzen oder umwandeln möchten?
Sed‘3,4s/line/Angel/I’file.txt>angel2.txt
Beachten Sie, dass wir im vorherigen Beispiel die Flagge „i“ verwendet haben, um „Ignorieren“ darzustellen. Jetzt verwenden wir die Flagge „g“, um global darzustellen.
Lassen Sie uns anhand eines Beispiels veranschaulichen, wie der Befehl „s“ funktioniert:
sed’s/line/sun/g ‘file.txt> txt
Wenn ein Ausdruck wie dieser verwendet wird, bedeutet er:
G steht für global. Denken Sie daran, dass es im ersten Beispiel, als wir die Flagge „i“ verwendeten, nur eine Ersetzung gab. Da wir global ein „g“ hinzugefügt haben, bedeutet dies, dass es überall Alternativen gibt. Anstelle von „erste Reihe“, „zweite Reihe“, „dritte Reihe“ und „letzte Reihe“ heißt es also „erste Sonne“, „zweite Sonne“, „dritte Sonne“ und „letzte Sonne“. Es ersetzt Wortzeilen (überall) in der gesamten Datei durch das Wort „Sonne“.
Was wäre nun, wenn wir eine Zeile anhand der darin enthaltenen Wörter auswählen möchten? Nun, wir können sehen, dass die letzte Zeile von „file.txt“ das Wort „last“ enthält. Nehmen wir nun an, wir möchten „Dies ist die letzte Zeile“. Das ist das letzte Wort.“ „Das ist der letzte Geist. Das ist das letzte Wort.“
Wir schreiben wie folgt:
Sed‘/last/S/line/host/’file.txt>.ghost.txt
Das „last“ hier weist SED an, die Zeile zu finden, die das Wort „last“ enthält, und dann das Wort „line“ durch „ghost“ in dieser Zeile zu ersetzen.
Nehmen wir an, wir wollen das Gegenteil tun. Angenommen, wir möchten, dass in jeder Zeile ohne das Wort „last“ das Wort „line“ in „host“ geändert wird. Schreiben wir Folgendes:
Bitte wählen Sie „/letzte/!“ S/line/ghost/’file.txt>.ghost2.txt
Wie Sie hier sehen können, ist in jeder Zeile außer der letzten Zeile (die das Wort „last“ enthält) das Wort „ghost“ durch das Wort „line“ ersetzt.
Wir können dies auch mit Zeilennummern tun:
Sed‘3,4! S/行/夜/I’file.txt>night.txt
In diesem Fall entfallen die Zeilen 3 und 4, aber in jeder zweiten Zeile wird das Wort „Zeile“ durch das Wort „Nacht“ ersetzt.
Was ist, wenn Sie mehrere Befehle haben? Möchten Sie sie lieber einzeln oder alle auf einmal erledigen, um Zeit und Arbeit zu sparen?
Was sollen wir tun, wenn wir das Wort „erster“ in „Tag“, das Wort „zweiter“ in „Nacht“ und das Wort „Ruhe“ in „Geist“ ändern möchten? Wir machen das mit Semikolons. Vergessen Sie nicht, am Ende das Semikolon zu setzen!
Bitte beachten Sie, dass Sie weder das „i“-Zeichen noch das „Ignorieren“-Zeichen, sondern den Schrägstrich (/) nach der Konvertierungsphrase einfügen müssen.
Lassen Sie es uns nun anhand eines Beispiels überprüfen:
sed’s/first/day/;s/second/night/;s/third/ghost/;s/last/ghost/;’file.txt>
Viel Spaß beim Codieren!
Das obige ist der detaillierte Inhalt vonStream-Editor (SED): Grundlagen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!