merging and cleaning up

This commit is contained in:
Mathias Schneider
2026-03-27 13:14:52 +01:00
parent 4eb84a28af
commit 82d7e0e888
62 changed files with 6 additions and 386 deletions
+270
View File
@@ -0,0 +1,270 @@
# sed - Stream Editor
Der `sed`-Befehl ist ein Stream-Editor für Textmanipulation. Er eignet sich besonders für Suchen-und-Ersetzen-Operationen.
## Grundsyntax
```bash
sed [OPTIONEN] 'BEFEHL' [DATEI...]
```
## Suchen und Ersetzen
### Grundlegendes Ersetzen
```bash
sed 's/alt/neu/' datei.txt
```
Ersetzt erste Vorkommen in jeder Zeile.
### Alle Vorkommen in Zeile
```bash
sed 's/alt/neu/g' datei.txt
```
- `g` = global (alle Vorkommen)
### Datei direkt ändern
```bash
sed -i 's/alt/neu/g' datei.txt
```
- `-i` = in-place (Datei wird geändert)
### Backup vor Änderung
```bash
sed -i.bak 's/alt/neu/g' datei.txt
```
Erstellt `datei.txt.bak` vor Änderung.
## Zeilen auswählen
### Bestimmte Zeile
```bash
sed -n '5p' datei.txt # Nur Zeile 5
sed '5d' datei.txt # Zeile 5 löschen
sed '5s/alt/neu/' datei.txt # Nur in Zeile 5 ersetzen
```
### Zeilenbereich
```bash
sed -n '10,20p' datei.txt # Zeilen 10-20 anzeigen
sed '10,20d' datei.txt # Zeilen 10-20 löschen
```
### Letzte Zeile
```bash
sed -n '$p' datei.txt # Letzte Zeile
```
### Muster-basiert
```bash
sed '/^#/d' datei.txt # Zeilen mit # am Anfang löschen
sed '/ERROR/s/foo/bar/' datei.txt # Nur in Zeilen mit ERROR
```
## Zeilen einfügen und anhängen
### Vor Zeile einfügen
```bash
sed '3i\Neue Zeile' datei.txt
```
### Nach Zeile anhängen
```bash
sed '3a\Neue Zeile' datei.txt
```
### Nach Muster
```bash
sed '/TODO/a\WICHTIG: Bitte bearbeiten' datei.txt
```
## Zeilen löschen
### Leere Zeilen
```bash
sed '/^$/d' datei.txt
```
### Kommentare
```bash
sed '/^#/d' datei.txt
```
### Mehrere Muster
```bash
sed -e '/^#/d' -e '/^$/d' datei.txt
```
## Reguläre Ausdrücke
### Erweiterte Regex
```bash
sed -E 's/[0-9]{3}-[0-9]{4}/XXX-XXXX/g' datei.txt
```
- `-E` = Extended Regex
### Gruppen und Backreferences
```bash
sed 's/\([0-9]*\)-\([0-9]*\)/\2-\1/' datei.txt
```
Vertauscht Zahlen vor und nach Bindestrich.
Mit `-E`:
```bash
sed -E 's/([0-9]*)-([0-9]*)/\2-\1/' datei.txt
```
## Praktische Beispiele
### Konfigurationsdatei ändern
```bash
sed -i 's/^#Port 22/Port 2222/' /etc/ssh/sshd_config
```
### IP-Adressen ersetzen
```bash
sed 's/192\.168\.1\./10.0.0./g' config.txt
```
### Zeilennummern hinzufügen
```bash
sed = datei.txt | sed 'N;s/\n/\t/'
```
### Kommentare und Leerzeilen entfernen
```bash
sed -e '/^#/d' -e '/^$/d' config.conf
```
### Mehrere Ersetzungen
```bash
sed -e 's/foo/bar/g' -e 's/alt/neu/g' datei.txt
```
### Case-insensitive Suche
```bash
sed 's/fehler/ERROR/gI' datei.txt
```
- `I` = case-insensitive
### Zeilen mit Muster extrahieren
```bash
sed -n '/ERROR/p' logfile.txt
```
Zeigt nur Zeilen mit "ERROR".
### Text zwischen Mustern
```bash
sed -n '/START/,/END/p' datei.txt
```
### Zeilen nummerieren
```bash
sed = datei.txt
```
## Mit Pipes
```bash
cat datei.txt | sed 's/alt/neu/g' | grep wichtig
ps aux | sed -n '1p;/firefox/p'
```
## Mehrere Dateien
```bash
sed -i 's/alt/neu/g' *.txt
```
## Sed-Skripte
**script.sed:**
```sed
# Kommentare entfernen
/^#/d
# Leerzeilen entfernen
/^$/d
# foo durch bar ersetzen
s/foo/bar/g
```
Verwenden:
```bash
sed -f script.sed datei.txt
```
## Fehler vermeiden
### Backup erstellen
```bash
sed -i.bak 's/alt/neu/g' wichtig.txt
```
### Testen ohne Änderung
```bash
sed 's/alt/neu/g' datei.txt > test.txt
diff datei.txt test.txt
```
### Spezialzeichen escapen
```bash
# Punkt ist Wildcard
sed 's/192.168.1.1/10.0.0.1/' config # FALSCH
# Punkt escapen
sed 's/192\.168\.1\.1/10.0.0.1/' config # RICHTIG
```
## Alternative Delimiter
Wenn Pfade mit `/` vorkommen:
```bash
sed 's|/old/path|/new/path|g' datei.txt
```
Statt `/` kann `|`, `#` oder andere Zeichen verwendet werden.
## Siehe auch
- [[grep]] - Textsuche
- [[awk]] - Komplexere Textverarbeitung
- [[find]] - Dateien finden und mit sed bearbeiten
- [[BASH Funktionen]] - sed in Funktionen verwenden