Dieser Artikel ist Teil der fortlaufenden Unix-Tutorial-Serie für sed-Befehle. In unseren vorherigen Artikeln haben wir sed mit einzelnen Befehlen gelernt – Drucken, Löschen, Ersetzen und Dateischreiben.
Sed bietet viele Befehle, um eine Reihe von Operationen mit den Zeilen in einer Datei auszuführen.
In diesem Artikel sehen wir uns an, wie man eine Zeile in einer Datei anhängt, einfügt, ersetzt und wie man Zeilennummern einer Datei bekommt.
- Zeilen anhängen
- Zeilen einfügen
- Zeilen ersetzen
- Zeilen zählen
Lassen Sie uns zuerst die Datei thegeekstuff.txt erstellen, die in allen unten genannten Beispielen verwendet wird.
$cat thegeekstuff.txt Linux Sysadmin Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Windows- Sysadmin, reboot etc.
Zeilen mit Sed-Befehl anhängen
Sed bietet den Befehl „a“, der nach jeder Zeile eine Zeile mit der Adresse oder dem Muster anhängt.
Syntax: #sed 'ADDRESS a\ Line which you want to append' filename #sed '/PATTERN/ a\ Line which you want to append' filename
Sed Append Beispiel 1. Fügen Sie eine Zeile nach der 3. Zeile der Datei hinzu.
Fügen Sie nach der 3. Zeile die Zeile „Coole Gadgets und Websites“ hinzu. Der Befehl sed „a“ fügt die Zeile nach der Übereinstimmung ein.
$ sed '3 a\ > Cool gadgets and websites' thegeekstuff.txt Linux Sysadmin Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Cool gadgets and websites Storage in Linux Productivity (Too many technologies to explore, not much time available) Windows- Sysadmin, reboot etc.
Sed Append Beispiel 2. Fügt eine Zeile nach jeder Zeile hinzu, die dem Muster entspricht
Der folgende sed-Befehl fügt die Zeile „Linux Scripting“ nach jeder Zeile hinzu, die dem Muster „Sysadmin“ entspricht.
$ sed '/Sysadmin/a \ > Linux Scripting' thegeekstuff.txt Linux Sysadmin Linux Scripting Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Windows- Sysadmin, reboot etc. Linux Scripting
Sed Append Beispiel 3. Fügt eine Zeile am Ende der Datei hinzu
Im folgenden Beispiel wird die Zeile „Website-Design“ am Ende der Datei angehängt.
$ sed '$ a\ > Website Design' thegeekstuff.txt Linux Sysadmin Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Windows- Sysadmin, reboot etc. Website Design
Zeilen mit Sed-Befehl einfügen
Der Sed-Befehl „i“ wird verwendet, um vor jeder Zeile mit dem Bereich oder Muster eine Zeile einzufügen.
Syntax: #sed 'ADDRESS i\ Line which you want to insert' filename #sed '/PATTERN/ i\ Line which you want to insert' filename
Sed Insert Beispiel 1. Fügen Sie eine Zeile vor der 4. Zeile der Zeile hinzu.
Fügen Sie vor der vierten Zeile eine Zeile „Coole Gadgets und Websites“ hinzu. Der Befehl „a“ fügt die Zeile nach der Übereinstimmung ein, während „i“ vor der Übereinstimmung einfügt.
$ sed '4 i\ > Cool gadgets and websites' thegeekstuff.txt Linux Sysadmin Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Cool gadgets and websites Storage in Linux Productivity (Too many technologies to explore, not much time available) Windows- Sysadmin, reboot etc.
Sed Insert Beispiel 2. Fügen Sie vor jeder Zeile mit dem Muster eine Zeile ein
Der folgende sed-Befehl fügt vor jeder Zeile, die mit dem Muster „Sysadmin“ übereinstimmt, eine Zeile „Linux Scripting“ hinzu.
$ sed '/Sysadmin/i \ > Linux Scripting' thegeekstuff.txt Linux Scripting Linux Sysadmin Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Linux Scripting Windows- Sysadmin, reboot etc.
Sed Insert Example 3. Fügt eine Zeile vor der letzten Zeile der Datei ein.
Fügen Sie vor der letzten Zeile der Datei eine Zeile „Website-Design“ hinzu.
$ sed '$ i\ > Website Design' thegeekstuff.txt Linux Sysadmin Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Website Design Windows- Sysadmin, reboot etc.
Zeilen mit Sed-Befehl ersetzen
Der Befehl „c“ in sed wird verwendet, um jede Zeile, die mit dem Muster übereinstimmt, oder Bereiche durch die neue angegebene Zeile zu ersetzen.
Syntax: #sed 'ADDRESS c\ new line' filename #sed '/PATTERN/ c\ new line' filename
Sed Replace Beispiel 1. Ersetzen Sie eine erste Zeile der Datei
Der folgende Befehl ersetzt die erste Zeile der Datei durch „The Geek Stuff“.
$ sed '1 c\ > The Geek Stuff' thegeekstuff.txt The Geek Stuff Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Windows- Sysadmin, reboot etc.
Sed Replace Beispiel 2. Ersetzen Sie eine Zeile, die dem Muster entspricht
Ersetzen Sie jede Zeile mit dem Muster „Linux Sysadmin“ durch „Linux Sysadmin – Scripting“.
$ sed '/Linux Sysadmin/c \ > Linux Sysadmin - Scripting' thegeekstuff.txt Linux Sysadmin - Scripting Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Windows- Sysadmin, reboot etc.
Sed Replace Beispiel 3. Ersetzen Sie die letzte Zeile der Datei
Der unten angegebene Sed-Befehl ersetzt die letzte Zeile der Datei durch „Letzte Zeile der Datei“.
$ sed '$ c\ > Last line of the file' thegeekstuff.txt Linux Sysadmin Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Last line of the file
Zeilennummern mit Sed-Befehl drucken
„=“ ist ein Befehl in sed, um die aktuelle Zeilennummer auf der Standardausgabe auszugeben.
Syntax: #sed '=' filename
Die obige Sendebefehlssyntax gibt die Zeilennummer in der ersten Zeile und die Originalzeile aus der Datei in der nächsten Zeile aus .
Der Befehl sed ‘=’ akzeptiert nur eine Adresse, wenn Sie also Zeilennummern für einen Bereich von Zeilen drucken möchten, müssen Sie die geschweiften Klammern verwenden.
Syntax: # sed -n '/PATTERN/,/PATTERN/ { = p }' filename
Beispiel für Zeilennummer 1. Finden Sie die Zeilennummer, die das Muster enthält
Der folgende sed-Befehl gibt die Zeilennummer aus, für die Übereinstimmungen mit dem Muster „Datenbanken“
vorliegen$ sed -n '/Databases/=' thegeekstuff.txt 2
Zeilennummer Beispiel 2. Druckbereich von Zeilennummern
Drucken Sie die Zeilennummern für die Zeilenübereinstimmungen aus dem Muster „Oracle“ bis „Productivity“.
$ sed -n '/Oracle/,/Productivity/{ > = > p > }' thegeekstuff.txt 2 Databases - Oracle, mySQL etc. 3 Security (Firewall, Network, Online Security etc) 4 Storage in Linux 5 Productivity (Too many technologies to explore, not much time available)
Beispiel Zeilennummer 3. Druckt die Gesamtzahl der Zeilen in einer Datei
Die Zeilennummer der letzten Zeile der Datei ist die Gesamtzahl der Zeilen in einer Datei. Muster $ gibt die letzte Zeile der Datei an.
$ sed -n '$=' thegeekstuff.txt 6