So ersetzen Sie mehrere Zeilen mit dem Befehl `sed`

How Replace Multiple Lines Using Sed Command



Manchmal müssen mehrere Zeilen einer Datei durch ein bestimmtes Zeichen oder Text ersetzt werden. In Linux gibt es verschiedene Befehle, um mehrere Zeilen einer Datei zu ersetzen. Der Befehl `sed` ist einer von ihnen, um diese Art von Aufgabe zu erledigen. Die vollständige Form von `sed` ist der Steam Editor und wird hauptsächlich verwendet, um den Text mithilfe eines regulären Ausdrucks auf verschiedene Weise zu lesen und zu konvertieren. Wie dieser Befehl verwendet werden kann, um mehrere Zeilen einer Datei auf unterschiedliche Weise zu ersetzen, wird in diesem Tutorial erklärt.

Häufig verwendeter Sed-Spickzettel:

Die am häufigsten verwendeten Zeichen, die im Befehl `sed` verwendet werden, werden in der folgenden Tabelle erklärt.







Charakter Zweck
zu Es wird zum Anhängen von Inhalten verwendet.
B Es wird zum Verzweigen von Inhalten verwendet.
C Es wird zum Ändern von Inhalten verwendet.
D Es wird zum Löschen einer Zeile einer Datei verwendet.
D Es wird verwendet, um die erste Zeile einer Datei zu löschen.
g Früher wurde aus dem Holding-Text kopiert.
g Es wird verwendet, um aus dem Bestandstext anzuhängen.
h Es wird verwendet, um den Bestandstext zu kopieren.
h Es wird verwendet, um an den Haltetext anzuhängen.
ich Es wird zum Einfügen verwendet.
ich Es wird verwendet, um die Ersatzzeile zu drucken.
n Es wird verwendet, um in die nächste Zeile zu wechseln.
n Es wird verwendet, um die nächste Eingabezeile anzuhängen.
P Es wird zum Drucken verwendet.
P Es wird verwendet, um die erste Zeile zu drucken.
was Es wird verwendet, um aufzuhören.
Q Es wird verwendet, um sofort zu beenden.
R Es wird verwendet, um die Datei zu lesen.
R Es wird verwendet, um die Zeile aus der Datei zu lesen.
S Es wird als Ersatz verwendet.
T Es wird verwendet, um auf Substitution zu testen.
T Es wird verwendet, um zu testen, ob keine Substitution vorliegt.
in Es wird verwendet, um in die Datei zu schreiben.
IN Es wird verwendet, um eine Zeile in die Datei zu schreiben.
x Es wird verwendet, um Muster zu tauschen und zu halten.
und Es wird zum Übersetzen verwendet.
Mit Es wird verwendet, um die Linie zu löschen.
'=' Es wird verwendet, um die Zeilennummer zu drucken.

Ersetzen Sie mehrere Zeilen mit dem Befehl `sed` aus dem Terminal:

In diesem Teil dieses Tutorials wird gezeigt, wie der Befehl `sed` verwendet werden kann, um die mehreren Zeilen einer Datei aus dem Terminal zu ersetzen. Erstellen Sie eine Datei mit dem Namen sed.txt Testen Sie mit folgendem Inhalt die Befehle dieses Teils.



sed.txt



Die vollständige Form von sed ist Stream Editor.





Es ist ein Unix-Dienstprogramm, das verwendet wird, um den Text in ein anderes Format zu lesen und zu konvertieren.

Es wurde von Lee E. McMahon entwickelt.



Es dient der Textverarbeitung.

Es unterstützt reguläre Ausdrücke.

Beispiel-1: Ersetzen von zwei aufeinanderfolgenden Zeilen

Der folgende `sed`-Befehl ersetzt zwei aufeinanderfolgende Zeilen durch eine andere. Hier wird die Option -z verwendet, um die aufeinanderfolgenden Zeilen durch Nulldaten zu ersetzen, bevor der Ersetzungstext hinzugefügt wird. Laut Befehl ist die 3rdund 4NSZeilen der Datei werden durch den Text ersetzt, „Es ist ein sehr nützliches Werkzeug“ .

$Katzesed.txt
$sed -Mit 's/Es wurde von Lee E. McMahon entwickelt. Es wird für Text verwendet
Verarbeitung./Es ist ein sehr nützliches Werkzeug./'
sed.txt

Die folgende Ausgabe wird angezeigt, nachdem die Befehle ausgeführt wurden.

Beispiel-2: Ersetzen mehrerer Zeilen basierend auf Übereinstimmung und globalem Flag

Der folgende `sed`-Befehl ersetzt alle Zeilen, die mit dem Wort beginnen, 'Es' durch das Wort „ Diese Zeile wird ersetzt ‘.

$Katzesed.txt
$sed 's/^It.*/Diese Zeile wird ersetzt/g'sed.txt

Die folgende Ausgabe wird angezeigt, nachdem die Befehle ausgeführt wurden. Drei Zeilen enthalten das Wort „ Es ' in der Datei. Diese Zeilen wurden also durch den Ersetzungstext ersetzt.

Beispiel-3: Ersetzen Sie mehrere Zeilen basierend auf dem Match- und Next-Line-Befehl

Der folgende `sed`-Befehl ersetzt das Wort „ ist ‘ beim Wort, ‘ war ‘ mit dem nächsten Zeilenbefehl ‚n‘.

$Katzesed.txt
$sed ' {n;/ist/ {s/is/was/}}'sed.txt

Die folgende Ausgabe wird angezeigt, nachdem die Befehle ausgeführt wurden. Hier, 'ist' existiert in der 2ndund 4NSZeilen der Datei, und diese Zeilen werden durch das Wort 'war' .

Ersetzen Sie mehrere Zeilen, indem Sie die Skriptdatei 'sed' erstellen:

In den vorherigen Beispielen wurden `sed`-Befehle vom Terminal ausgeführt. Aber es ist eine Skriptsprache, und wenn das Skript mehrere Anweisungen enthält, ist es besser, eine sed-Datei mit dem Skript zu erstellen. Erstellen Sie eine Textdatei mit dem Namen Studenten.txt mit folgendem Inhalt, in dem das Skript `sed` angewendet wird.

Studenten.txt

ID: 111045
Name: Robert
Abteilung: CSE
Stapel: 35

ID: 111876
Name: Joseph
Abteilung: BBA
Stapel: 27

ID: 111346
Name: William
Abteilung: CSE
Stapel: 45

ID: 111654
Name: Charles
Abteilung: EEE
Stapel: 41

ID: 111346
Name: John
Abteilung: CSE
Stapel: 25

ID: 111746
Name: Thomas
Abteilung: CSE
Stapel: 15

Beispiel-4: Ersetzen Sie mehrere Zeilen einer Datei mit der `sed`-Skriptdatei

Erstellen Sie eine sed-Datei mit dem Namen to ersetzen.sed mit dem folgenden Inhalt, um die mehreren Zeilen basierend auf dem Suchmuster zu ersetzen. Hier ist das Wort „ CSE ‘ wird in der Textdatei gesucht, und wenn die Übereinstimmung existiert, wird erneut nach den Nummern 35 und 15 gesucht. Wenn die zweite Übereinstimmung in der Datei vorhanden ist, wird sie durch die Nummer 45 ersetzt.

ersetzen.sed

/CSE/ {
p;n;
/35/ {
S/35/Vier fünf/;
p;d;
}
/fünfzehn/ {
S/fünfzehn/55/;
p;d;
}
}
P;

Führen Sie den folgenden Befehl aus, um den vorhandenen Inhalt der Datei zu überprüfen. „CSE“ tauchte viermal in der Textdatei auf. 35 und 15 existieren an zwei Stellen.

$KatzeStudenten.txt

Der folgende Befehl ersetzt den Inhalt der mehreren Zeilen basierend auf dem sed-Skript.

$sed -n -FErsetzen.sed Students.txt

Die folgende Ausgabe wird angezeigt, nachdem der Befehl ausgeführt wurde.

Abschluss

In diesem Tutorial wurden verschiedene Möglichkeiten zum Ersetzen mehrerer Zeilen oder des Inhalts mehrerer Zeilen mit dem Befehl `sed` gezeigt. Wie das `sed`-Skript aus einer sed-Datei ausgeführt werden kann, wird ebenfalls in diesem Tutorial gezeigt. Ich hoffe, dieses Tutorial wird dem Leser helfen, mehrere Zeilen einer beliebigen Datei mit dem Befehl `sed` zu ersetzen.