EMZETT.
Login

grep, sed und awk: Text im Terminal bearbeiten

Kurz: Drei Klassiker der Kommandozeile: grep sucht, sed ersetzt, awk rechnet mit Spalten. Zusammen mit Pipes (|) bearbeitet man Textdateien und Logs blitzschnell.

grep: suchen

grep "fehler" log.txt          # Zeilen mit "fehler"
grep -i "fehler" log.txt       # Groß-/Kleinschreibung egal
grep -rn "TODO" src/           # rekursiv, mit Zeilennummer
grep -v "debug" log.txt        # Zeilen OHNE "debug"
grep -E "^(GET|POST) " log.txt # erweiterter regulärer Ausdruck

Zu regulären Ausdrücken siehe RegEx (Reguläre Ausdrücke).

sed: ersetzen

sed 's/alt/neu/g' datei.txt        # alles ersetzen, Ausgabe auf dem Bildschirm
sed -i 's/alt/neu/g' datei.txt     # direkt in der Datei (-i)
sed -n '5,10p' datei.txt           # nur die Zeilen 5 bis 10
sed '/^#/d' datei.txt              # Kommentarzeilen löschen

awk: Spalten

awk '{print $1}' log.txt                 # erste Spalte
awk -F: '{print $1, $3}' /etc/passwd     # Trennzeichen ":"
awk '{s+=$2} END {print s}' zahlen.txt   # Summe der zweiten Spalte

Zusammenspiel

grep "404" access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head

Zeigt die Adressen mit den meisten 404-Fehlern. Merke: Vor sed -i immer eine Sicherung anlegen oder erst ohne -i prüfen.

Siehe auch: Shell-Skripte schreiben