GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Unix Sed Tutorial:Löschen Sie Dateizeilen mit Adresse und Mustern

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.

Linux
  1. Verwenden von sed zum Suchen und Ersetzen von Textdateien in Linux

  2. Linien zwischen (und ausschließenden) zwei Mustern drucken?

  3. Zeilen zwischen (und einschließlich) zwei Mustern drucken?

  4. Wie lösche ich mehrere zufällige Zeilen aus einer Textdatei mit Sed?

  5. Wie lösche ich die ersten N Zeilen einer ASCII-Datei mit Shell-Befehlen?

Unix Sed Tutorial:Drucken von Dateizeilen mit Adresse und Mustern

Unix Sed Tutorial:Suchen und Ersetzen von Text in einer Datei mit RegEx

Unix Sed Tutorial:So schreiben Sie mit Sed in eine Datei

Unix Sed Tutorial:Dateizeilen anhängen, einfügen, ersetzen und zählen

Unix Sed Tutorial:7 Beispiele für Sed Hold und Pattern Buffer Operationen

Unix Sed Tutorial:Mehrzeilige Dateioperation mit 6 praktischen Beispielen