sed-Befehl in Bash

Nilesh Katuwal 24 März 2022
  1. Bash-sed-Syntax
  2. Bash sed Beispiele
sed-Befehl in Bash

Der Befehl sed ist ein Streaming-Texteditor, der nach dem Ersetzungskonzept arbeitet.

Es wird verwendet, um Dateifragmente zu entdecken, einzufügen, zu ersetzen und zu entfernen. Sie können dieses Programm verwenden, um Dateien zu ändern, ohne sie öffnen zu müssen.

Dieses Tutorial behandelt die Grundlagen des Linux-Programms sed, seine Syntax und die Syntax regulärer Ausdrücke, die direkt zum Suchen und Ersetzen von Dateien verwendet werden.

Bash-sed-Syntax

sed wird oft verwendet, um einen Textstrom aus der Standardeingabe oder einer Datei zu verarbeiten. Das bedeutet, dass Sie die Ausgabe eines anderen Befehls zur Bearbeitung direkt an die Eingabe des Dienstprogramms übergeben oder mit einer bereits erstellten Datei interagieren können.

Standardmäßig werden alle Ergebnisse an die Standardausgabe gesendet, was bedeutet, dass sie auf dem Bildschirm angezeigt und nicht in einer Datei gespeichert werden, bis sie umgeleitet werden.

Das Folgende ist die Befehlssyntax:

$ sed [options] commands [file-to-edit]

file-to-edit bezeichnet den Speicherort der Datei und options bezeichnet Regeln während der Bearbeitung der gegebenen Datei. Und hier sind einige der wichtigsten Optionen:

  • -n, -quiet: Nach jeder Iteration den Inhalt des Vorlagenpuffers nicht ausgeben.
  • -e: Befehle, die zum Bearbeiten ausgeführt werden sollen.
  • -f: liest Bearbeitungsbefehle aus einer Datei.
  • -i: Erstellt vor der Bearbeitung eine Sicherungskopie der Datei.
  • -l: Damit können Sie Ihre Zeilenlänge einstellen.
  • -r: aktiviert die Unterstützung für die erweiterte Syntax regulärer Ausdrücke.
  • -s: Wenn Sie mehrere Dateien übertragen, betrachten Sie diese als einzelne Streams und nicht als einen langen.

Bash sed Beispiele

Wir haben eine Datei namens demosed.txt erstellt und im Home-Verzeichnis mit folgendem Inhalt gespeichert:

demonstriert

Zeigen Sie zunächst die Zeilen 1 bis 5 aus der Datei demosed.txt im Home-Verzeichnis an.

Dazu verwenden wir den Befehl p. Wir verwenden die Option -n, um bei jeder Iteration das zu drucken, was wir brauchen, und nicht den gesamten Inhalt des Vorlagenpuffers.

$ sed -n '1,5p' demosed.txt

Ausgabe:

This is the first line.
This is the second line.
This is the third line.
This is the fourth line.
This is the fifth line.

So geben Sie die gesamte Datei aus (mit Ausnahme der Zeilen 1-10):

$ sed '1,10d' demosed.txt

Wir verwenden d anstelle des p-Befehls, um den Text zu entfernen. In diesem Fall haben wir nicht die Option -n verwendet, um alles anzuzeigen, da das Dienstprogramm alles anzeigt, was nicht gelöscht wird, wenn wir den Löschbefehl verwenden, sondern stattdessen den Befehl d verwendet haben, um das Unerwünschte zu löschen.

Ausgabe:

This is the eleventh line.
This is the twelveth line.
This is the thirteenth line.
This is the fifteenth line.

Wie erwartet werden nur die Zeilen 11 bis 15 gedruckt.

Wenn wir demosed.txt öffnen, sehen wir denselben Befehl wie beim Ausführen des vorherigen Befehls.

Aus Sicherheitsgründen ändert sed die Quelldatei standardmäßig nicht. Die Option -i, die an Ort und Stelle bearbeiten bedeutet, kann verwendet werden, um die Originaldatei zu manipulieren.

So löschen Sie die 14. Zeile aus der Datei:

$ sed -i '13~15d' demosed.txt

Der obige Befehl gibt keine Ausgabe aus. Sehen wir uns den Inhalt der Datei an.

demonstriert1

Verglichen mit der älteren Version der Datei sehen wir diese Zeile 14 mit dem Text This is thirteenth line. wird vermisst.

Regex kann auch in sed mit options verwendet werden. Schauen wir uns ein Beispiel an.

$ sed '/^nine\|^$\| *nine/d' demosed.txt

Ausgabe:

This is the first line.
This is the second line.
This is the third line.
This is the fourth line.
This is the fifth line.
This is the sixth line.
This is the seventh line.
This is the eighth line.
This is the tenth line.
This is the eleventh line.
This is the twelveth line.
This is the fifteenth line.

'/^nine\|^$\| *nine/' ist die Regex-Operation, die den Satz mit dem Wort nine erkennt. Der obige Befehl manipuliert die Originaldatei nicht, da wir -i nicht verwendet haben, aber wir können sehen, dass die Zeile mit nine herausgefiltert wird.

Verwandter Artikel - Bash Command