Im vorherigen sed-Tutorial haben wir über die Grundlagen von Unix-sed-Befehlen und das Drucken von Zeilen aus einer Datei unter Verwendung von sed-Adressen und -Mustern gesprochen .
Lassen Sie uns in diesem Artikel anhand von 8 großartigen Beispielen überprüfen, wie Sie Zeilen aus einer Datei mithilfe von Adressen und Mustern löschen.
- Der Befehl „p“ druckt den Puffer (denken Sie daran, die Option -n mit „p“ zu verwenden)
- Der „d“-Befehl steht genau gegenüber, es dient zum Löschen. 'd' löscht den Pattern Space Buffer und startet sofort den nächsten Zyklus.
Syntax: # sed 'ADDRESS'd filename # sed /PATTERN/d filename
Die im Druck angegebene Syntax für ADRESSEN und MUSTER gilt auch für das Löschen, mit Ausnahme der Option -n. (-n nur zum Unterdrücken des Druckmusterpuffers, kann mit dem „p“-Befehl verwendet werden)
Lassen Sie uns zuerst die Datei thegeekstuff.txt erstellen, die in allen unten genannten Beispielen verwendet wird.
# cat thegeekstuff.txt 1. Linux - Sysadmin, Scripting etc. 2. Databases - Oracle, mySQL etc. 3. Hardware 4. Security (Firewall, Network, Online Security etc) 5. Storage 6. Cool gadgets and websites 7. Productivity (Too many technologies to explore, not much time available) 8. Website Design 9. Software Development 10.Windows- Sysadmin, reboot etc.
1. Nte Zeile löschen
‘Nd’ löscht die N-te Zeile und druckt die anderen Zeilen.
sed ‘Nd’ Dateiname
Gemäß der sed-Methodik,
- Er liest die erste Zeile und platziert sie in seinem Musterpuffer.
- Überprüfen Sie, ob der gelieferte Befehl für diese Zeile wahr ist, falls wahr, wird der Musterraumpuffer gelöscht und der nächste Zyklus gestartet. d.h. Nächste Zeile lesen.
- Wenn der angegebene Befehl nicht wahr ist, gibt er als normales Verhalten den Inhalt des Musterbereichspuffers aus.
Beispielsweise löscht 3d die dritte Zeile und druckt andere Zeilen wie unten gezeigt.
$ sed 3d thegeekstuff.txt 1. Linux - Sysadmin, Scripting etc. 2. Databases - Oracle, mySQL etc. 4. Security (Firewall, Network, Online Security etc) 5. Storage 6. Cool gadgets and websites 7. Productivity (Too many technologies to explore, not much time available) 8. Website Design 9. Software Development 10.Windows- Sysadmin, reboot etc.
2. Löschen Sie ab der 3. Zeile und jede 2. Zeile von dort.
$ sed '3~2d' thegeekstuff.txt 1. Linux - Sysadmin, Scripting etc. 2. Databases - Oracle, mySQL etc. 4. Security (Firewall, Network, Online Security etc) 6. Cool gadgets and websites 8. Website Design 10.Windows- Sysadmin, reboot etc.
3. Löschen Sie die vierte bis achte Zeile aus der Datei.
$ sed '4,8d' thegeekstuff.txt 1. Linux - Sysadmin, Scripting etc. 2. Databases - Oracle, mySQL etc. 3. Hardware 9. Software Development 10.Windows- Sysadmin, reboot etc.
4. Löschen Sie die letzte Zeile aus der Eingabe.
$ sed '$d' thegeekstuff.txt 1. Linux - Sysadmin, Scripting etc. 2. Databases - Oracle, mySQL etc. 3. Hardware 4. Security (Firewall, Network, Online Security etc) 5. Storage 6. Cool gadgets and websites 7. Productivity (Too many technologies to explore, not much time available) 8. Website Design 9. Software Development
5. Lösche die Zeile, die dem gegebenen Muster entspricht, aus der Eingabe.
Der folgende Befehl löscht beispielsweise die Zeile, die mit „Sysadmin“ übereinstimmt.
$ sed /Sysadmin/d thegeekstuff.txt 2. Databases - Oracle, mySQL etc. 3. Hardware 4. Security (Firewall, Network, Online Security etc) 5. Storage 6. Cool gadgets and websites 7. Productivity (Too many technologies to explore, not much time available) 8. Website Design 9. Software Development
6. Löscht die Zeile, ab der das angegebene Muster zum Ende der Datei passt.
$ sed '/Website/,$d' thegeekstuff.txt 1. Linux - Sysadmin, Scripting etc. 2. Databases - Oracle, mySQL etc. 3. Hardware 4. Security (Firewall, Network, Online Security etc) 5. Storage 6. Cool gadgets and websites 7. Productivity (Too many technologies to explore, not much time available)
7. Löscht die Zeile, die dem angegebenen Muster entspricht, und 2 Zeilen daneben.
$ sed '/Storage/,+2d' thegeekstuff.txt 1. Linux - Sysadmin, Scripting etc. 2. Databases - Oracle, mySQL etc. 3. Hardware 4. Security (Firewall, Network, Online Security etc) 8. Website Design 9. Software Development 10.Windows- Sysadmin, reboot etc.
8. Löschen Sie eine leere Zeile aus einer Datei mit sed
Sie können auch Leerzeilen mit sed entfernen. Das folgende sed-Beispiel zeigt, wie man sed verwendet und Leerzeilen entfernt.
$ sed '/^$/d' thegeekstuff.txt 1. Linux - Sysadmin, Scripting etc. 2. Databases - Oracle, mySQL etc. 3. Hardware 4. Security (Firewall, Network, Online Security etc) 5. Storage 6. Cool gadgets and websites 7. Productivity (Too many technologies to explore, not much time available) 8. Website Design 9. Software Development 10.Windows- Sysadmin, reboot etc.