Der SED-Befehl in UNIX steht für Stream Editor und kann viele Funktionen für Dateien ausführen, wie Suchen, Suchen und Ersetzen, Einfügen oder Löschen. Obwohl der SED-Befehl unter UNIX am häufigsten zum Ersetzen oder zum Suchen und Ersetzen verwendet wird. Mit SED können Sie Dateien bearbeiten, ohne sie öffnen zu müssen. Das ist eine viel schnellere Möglichkeit, etwas in einer Datei zu finden und zu ersetzen, als die Datei zuerst im VI-Editor zu öffnen und sie dann zu ändern.
- SED ist ein leistungsstarker Textstream-Editor. Kann Einfügen, Löschen, Suchen und Ersetzen (Ersetzen) durchführen.
- Der SED-Befehl unter Unix unterstützt reguläre Ausdrücke, wodurch er einen komplexen Mustervergleich durchführen kann.
Syntax:
sed OPTIONS... [SCRIPT] [INPUTFILE...]>
Beispiel:
Betrachten Sie die folgende Textdatei als Eingabe.
$cat>geekfile.txt>
unix is great os. unix is opensource. unix is free os. learn operating system. unix linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>
Beispielbefehle
- Ersetzen oder Ersetzen einer Zeichenfolge: Der Sed-Befehl wird hauptsächlich zum Ersetzen des Texts in einer Datei verwendet. Der folgende einfache sed-Befehl ersetzt das Wort „unix“ durch „linux“ in der Datei.
$sed 's/unix/linux/' geekfile.txt>
Ausgabe :
rr-Algorithmus
linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>
Hier gibt das s die Substitutionsoperation an. Die / sind Trennzeichen. Das Unix ist das Suchmuster und das Linux ist die Ersatzzeichenfolge.
Standardmäßig ersetzt der Befehl sed das erste Vorkommen des Musters in jeder Zeile und nicht das zweite, dritte Vorkommen in der Zeile. Ersetzen des n-ten Vorkommens eines Musters in einer Zeile: Verwenden Sie die Flags /1, /2 usw., um das erste und zweite Vorkommen eines Musters in einer Zeile zu ersetzen. Der folgende Befehl ersetzt das zweite Vorkommen des Wortes unix durch linux in einer Zeile.
$sed 's/unix/linux/2' geekfile.txt>
Ausgabe:
unix is great os. linux is opensource. unix is free os. learn operating system. unix linux which one you choose. unix is easy to learn.linux is a multiuser os.Learn unix .unix is a powerful.>Ersetzen aller Vorkommen des Musters in einer Zeile: Das Ersatzflag /g (globale Ersetzung) gibt an, dass der sed-Befehl alle Vorkommen der Zeichenfolge in der Zeile ersetzen soll.
$sed 's/unix/linux/g' geekfile.txt>
Ausgabe :
linux is great os. linux is opensource. linux is free os. learn operating system. linux linux which one you choose. linux is easy to learn.linux is a multiuser os.Learn linux .linux is a powerful.>Ersetzen vom n-ten Vorkommen bis zu allen Vorkommen in einer Zeile: Verwenden Sie die Kombination aus /1, /2 usw. und /g, um alle Muster ab dem n-ten Vorkommen eines Musters in einer Zeile zu ersetzen. Der folgende sed-Befehl ersetzt das dritte, vierte, fünfte … Unix-Wort durch ein Linux-Wort in einer Zeile.
$sed 's/unix/linux/3g' geekfile.txt>
Ausgabe:
unix is great os. unix is opensource. linux is free os. learn operating system. unix linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn linux .linux is a powerful.>Setzen Sie das erste Zeichen jedes Wortes in Klammern: Dieses Sed-Beispiel gibt das erste Zeichen jedes Wortes in Klammern aus.
$ echo 'Welcome To The Geek Stuff' | sed 's/([A-Z])/(1)/g'>
Ausgabe:
(W)elcome (T)o (T)he (G)eek (S)tuff>Zeichenfolge in einer bestimmten Zeilennummer ersetzen: Sie können den Befehl sed darauf beschränken, die Zeichenfolge in einer bestimmten Zeilennummer zu ersetzen. Ein Beispiel ist
$sed '3 s/unix/linux/' geekfile.txt>
Ausgabe:
unix is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>
Der obige sed-Befehl ersetzt die Zeichenfolge nur in der dritten Zeile. Duplizieren der ersetzten Zeile mit dem /p-Flag: Das /p-Druckflag druckt die ersetzte Zeile zweimal auf dem Terminal. Wenn eine Zeile nicht über das Suchmuster verfügt und nicht ersetzt wird, druckt /p diese Zeile nur einmal.
Binäre Suche
$sed 's/unix/linux/p' geekfile.txt>
Ausgabe:
linux is great os. unix is opensource. unix is free os. linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>Nur die ersetzten Zeilen drucken: Verwenden Sie die Option -n zusammen mit dem Druckflag /p, um nur die ersetzten Zeilen anzuzeigen. Hier unterdrückt die Option -n die durch das Flag /p generierten doppelten Zeilen und gibt die ersetzten Zeilen nur einmal aus.
$sed -n 's/unix/linux/p' geekfile.txt>
Ausgabe:
linux is great os. unix is opensource. unix is free os. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>
Wenn Sie -n allein ohne /p verwenden, druckt der SED nichts. Ersetzen einer Zeichenfolge in einem Zeilenbereich: Sie können dem Befehl sed zum Ersetzen einer Zeichenfolge einen Bereich von Zeilennummern angeben.
$sed '1,3 s/unix/linux/' geekfile.txt>
Ausgabe:
linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>
Hier ersetzt der Befehl sed die Zeilen im Bereich von 1 bis 3. Ein weiteres Beispiel ist
$sed '2,$ s/unix/linux/' geekfile.txt>
Ausgabe:
unix is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful>
Hier gibt $ die letzte Zeile in der Datei an. Der Befehl sed ersetzt also den Text von der zweiten bis zur letzten Zeile in der Datei. Zeilen aus einer bestimmten Datei löschen: Der SED-Befehl kann auch zum Löschen von Zeilen aus einer bestimmten Datei verwendet werden. Der SED-Befehl wird zum Ausführen eines Löschvorgangs verwendet, ohne die Datei überhaupt zu öffnen
Beispiele:
1. Um eine bestimmte Zeile zu löschen, sagen Sie in diesem Beispiel n
Syntax: $ sed 'nd' filename.txt Example: $ sed '5d' filename.txt>
2. Um eine letzte Zeile zu löschen
Syntax: $ sed '$d' filename.txt>
3. Zum Löschen einer Linie im Bereich x bis y
Syntax: $ sed 'x,yd' filename.txt Example: $ sed '3,6d' filename.txt>
4. Zum Löschen von der n-ten bis zur letzten Zeile
Syntax: $ sed 'nth,$d' filename.txt Example: $ sed '12,$d' filename.txt>
5. Mustervergleichslinie löschen
Syntax: $ sed '/pattern/d' filename.txt Example: $ sed '/abc/d' filename.txt>
SED-Befehl unter Linux | Satz 2