Ersetzen Sie das letzte Ereignis des Textes in einer Zeichenfolge:
Dieser Abschnitt zeigt, wie das letzte Auftreten des Suchmusters in einer Zeichenfolge ersetzt werden kann, indem der Befehl "SED" verwendet wird.
Beispiel 1: Ersetzen Sie das letzte Auftreten eines Wortes basierend auf dem Muster
Der folgende Befehl 'SED' sucht das Wort "Php" in der Zeichenfolge und ersetzen Sie das Suchwort durch das Wort "AngularJs" Wenn das Wort in der Zeichenfolge existiert.
$ echo "Java Php Bash Python JavaScript Perl Php Laravel" |
sed 's/\ (.*\) Php/\ 1angularjs/'
Die folgende Ausgabe wird nach dem Ausführen des Befehls angezeigt. Hier das Wort "Php" existiert zweimal in der Saite, und das letzte Ereignis wurde durch das Wort ersetzt ' Angularjs''.
Beispiel-2: Ersetzen Sie das letzte Auftreten des Ziffernbasis-Musters
Der folgende Befehl 'SED' sucht eine Ziffer in der Zeichenfolge und ersetzt die letzte Ziffer durch die Nummer 9.
$ echo "Der erste Zählerwert 2. Der zweite Zählerwert 4 "|
sed 's/\ (.*\) [0-9])*/\ 19/'
Die folgende Ausgabe wird nach dem Ausführen des Befehls angezeigt. Hier erscheint die Ziffer zweimal in der Saite und in der letzten Ziffer, 4, wurde durch die Zahl ersetzt 9.
Beispiel-3: Ersetzen Sie die letzte Ziffer einer Zahl basierend auf dem Muster
Der folgende Befehl 'SED' ersetzt die letzte Ziffer, die im Stringwert durch den Wert durch Doppel Null (0 0) vorhanden ist, der im Zeichenfolgewert vorliegt.
$ echo "Der Produktpreis beträgt 500 US -Dollar."| sed 's/\ (.*\) [0-9]/\ 100/'
Die folgende Ausgabe wird nach dem Ausführen des Befehls angezeigt. Hier, 500 existiert im String -Wert. So laut dem Ersatzbefehl die letzte Null von 500 wurde durch zwei Doppel Null ersetzt, und der ersetzte Wert ist 5000.
Beispiel-4: Ersetzen Sie das letzte Auftreten eines Wortes durch ein anderes Wort
Der folgende Befehl 'SED' sucht das Wort 'Jun' in der Zeichenfolge und ersetzen Sie das letzte Ereignis des Wortes durch den Wert, 'Dürfen'.
$ printf "%s \ n" Jan Feb Junc Apr Jun Dec | Tr '\ n' "|
sed 's/\ (.*\) Jun/\ 1MAY/'| tr "'\ n'
Die folgende Ausgabe wird nach dem Ausführen des Befehls angezeigt. Hier das Wort 'Jun' existiert zweimal in der Saite, und das letzte Ereignis wurde durch das Wort ersetzt 'Dürfen'.
Ersetzen Sie das letzte Ereignis eines Textes in einer Datei:
Erstellen Sie eine Textdatei mit dem Namen Verkauf.txt Mit dem folgenden Inhalt zum Testen des in diesem Teil des Tutorial verwendeten Befehl.
Verkauf.txt
MonatsjahrsbetragBeispiel-5: Ersetzen Sie das letzte Auftreten eines Wortes durch ein anderes Wort
Der folgende Befehl 'SED' sucht das Wort 'Januar'In der Datei und ersetzen Sie das letzte Ereignis dieses Wortes durch das Wort, 'Juli''.
$ cat Sales.txt
$ sed '$ S/Januar/Juli/' Verkäufe.txt
Nach dem Ausführen der Befehle wird die folgende Ausgabe angezeigt. Das Wort 'Januar' erscheint zweimal in der Datei. Das letzte Ereignis, das in der 7 existiertth Die Zeile der Datei wurde durch das Wort ersetzt 'Juli'In der Ausgabe.
Beispiel-6: Ersetzen Sie das letzte Vorkommen einer Zahl durch eine andere Zahl
'TAC' Der Befehl wird verwendet, um den Inhalt der Datei umzukehren. 'TAC' Der Befehl wird im folgenden Befehl "SED" verwendet, um das letzte Ereignis von zu ersetzen '2019'Mit dem Wort, "2017".
$ cat Sales.txt
$ tac sales.txt | sed '0,/2019/s/2019/2017/' | TAC
Nach dem Ausführen der Befehle wird die folgende Ausgabe angezeigt. Hier der Jahreswert, '2019'Erscheint dreimal in der Datei. Der erste, 'TAC' Der Befehl hat den Inhalt der Datei umgekehrt und die Ausgabe in die gesendet "sed" Befehl, das erste Ereignis von zu ersetzen "2019" Dies ist das letzte Ereignis in der Datei nach dem Jahreswert, "2017". Nach dem Ersatz wurde die Ausgabe an die gesendet 'TAC' Befehl, um die Ausgabe erneut umzukehren. Auf diese Weise das letzte Ereignis von '2019'wurde durch den Wert ersetzt, '2017''.
Beispiel-7: Ersetzen Sie alles einer Zeile basierend auf dem letzten Auftreten eines Wortes
Die folgende "sed" Der Befehl ersetzt die Linie durch eine Registerkarte (\ t) abgrenzter Text, in dem die Zeile mit der Zeichenfolge beginnt 'Beschädigen' Zum letzten Mal in der Datei.
$ cat Sales.txt
$ tac sales.txt | sed '0,/^mar.*/s/^mar.*/Juli \ t \ t2018 \ t $ 400000/ '| TAC
Nach dem Ausführen der Befehle wird die folgende Ausgabe angezeigt. Zwei Zeilen in der Datei beginnen mit der Zeichenfolge, 'Beschädigen', und das letzte Ereignis dieser Zeichenfolge erscheint in der 5th Linie. Der erste 'TAC' Der Befehl wurde verwendet, um den Inhalt der Datei umzukehren und die Ausgabe an die 'zu sendensed ' Befehl. ''sed"Der Befehl hat die Linie durch einen Text ersetzt."Jully 2018 $ 400000'Wo die Suchzeichenfolge zum ersten Mal gefunden wurde. Die Ausgabe von die 'sed'Befehl wurde an die gesendet 'TAC' Befehl erneut um die Ausgabe umzukehren, die der Hauptinhalt der Datei ist.
Abschluss:
Der Befehl 'SED' kann verwendet werden, um einen Teil einer Zeichenfolge oder eine Zeile der Datei auf unterschiedliche Weise zu ersetzen, indem reguläre Ausdrucksmuster verwendet werden. Dieses Tutorial zeigte die Möglichkeiten, das letzte Auftreten des Suchtextes in einer Zeichenfolge oder einer Datei durch mehrere 'SED -Befehle zu ersetzen. Wie der Befehl "TAC" mit dem Befehl "SED" verwendet werden kann, um das letzte Auftreten des Suchtextes zu ersetzen, wurde auch in diesem Tutorial gezeigt. Aber alle hier verwendeten Befehle generieren die Ausgabe vorübergehend. Sie müssen die Option '-i' mit dem Befehl 'SED' verwenden, um den Inhalt der Datei dauerhaft basierend auf dem Muster zu ändern.