Diese fünf kleinen Tools sind echte Arbeitspferde für jeden, der mit Text auf der Kommandozeile arbeitet. Sie haben viele Optionen – aber man braucht nicht alles zu kennen. Schon mit ein paar Grundbefehlen kann man 80 % der typischen Aufgaben lösen.
1. grep
– Zeilen finden
grep filtert Textzeilen anhand von Mustern. Praktisch, wenn man in langen Outputs schnell das Relevante sehen will.
Aufgabe | Befehl | Beispiel | |
---|---|---|---|
Textzeilen ausgeben, die ein Wort enthalten | grep PATTERN |
`cat protokoll.txt | grep "Fehler"` |
Zeilen ausschließen | grep -v PATTERN |
grep -v "^#" protokoll.txt |
|
In einem ganzen Projektbaum nach | grep -r PATTERN DIR |
grep -r "TODO" src/ |
Tipps
-i
ignoriert Groß/Kleinschreibung-e
aktiviert Reguläre Ausdrücke (unter linux gibt es noch-P
für Perl-kompatible Regex)
Kombinationen über Pipes machen grep besonders stark:
grep -r -P "def \w*\(" . --after-context 30 | grep "foo" | grep -v "bar"
Für große Projekte lohnt sich ripgrep (rg), weil es schneller ist, .gitignore
respektiert und reguläre Ausdrücke standardmäßig aktiviert.
2. cut
– Spalten und Zeichen
cut
schneidet Spalten oder Zeichen aus Textzeilen heraus. Funktioniert am besten, wenn der Trenner ein einzelnes Zeichen ist.
Aufgabe | Befehl | Beispiel |
---|---|---|
Spalte 2 eine CSV 1 | -d ',' -f 2 |
cut -d ',' -f 2 daten.csv |
Zeichen 5‑10 einer Zeile | -c 5-10 |
cut -c 5-10 string.txt |
Mehrere Felder | -f 1,3,5 |
cut -d ';' -f 1,3,5 daten.txt |
Bei Whitespace-getrennten Daten stößt cut an Grenzen – da ist awk
besser.
3. awk
– Felder und Muster
awk
versteht Texte als Felder, getrennt durch Whitespace oder ein angegebenes Zeichen. Wenn man möchte, kann man mit awk
Text-Dateien fast wie Datenbanken abfragen, aber für den Anfang:
Aufgabe | Befehl | Beispiel |
---|---|---|
Spalten ausgeben | {print $1, $3} |
awk '{print $1, $3}' daten.txt |
Letzte Spalte ausgeben | {print $NF} |
awk '{print $NF}' daten.txt |
Summe einer Spalte | {s+=$2} END {print s} |
awk '{s+=$2} END {print s}' zahlen.txt |
Nützliche Variablen
NF
= Anzahl Felder in der ZeileNR
= aktuelle Zeilennummer
4. sed
– Suchen und Ersetzen
sed
ist ein Stream-Editor: ideal für Ersetzungen und einfache Transformationen.
Aufgabe | Befehl | Beispiel |
---|---|---|
Ersetzen | s/alt/neu/g |
sed 's/Fehler/Warning/g' log.txt |
Vorsicht: Nie direkt in die gleiche Datei schreiben mit > – sonst überschreibst du sie, bevor sie gelesen wurde. DAMIT HABE ICH SCHON DATEN VERLOREN Stattdessen:
sed -i 's/alt/neu/g' datei.txt # Direkt in der Datei ändern
5. tr
– Zeichen übersetzen
Aufgabe | Befehl | Beispiel |
---|---|---|
Groß→Klein | tr [:upper:][:lower:] |
tr '[:upper:]' '[:lower:]' < input.txt |
Leerzeichen löschen | tr -d ' ' |
tr -d ' ' < file |
ROT13 (Caesar‑Shift) | tr 'a-z' 'n-za-m' |
tr 'a-z' 'n-za-m' < text.txt |
Mehrere Zeichen gleichzeitig | tr 'abc' 'ABC' |
tr 'abc' 'ABC' < input.txt |
Beispiel: $PATH
lesbarer machen:
❯ echo $PATH | tr ':' '\n' | nl
Fazit
grep
: Zeilen nach Mustern filterncut
: Spalten oder Zeichen ausschneiden.awk
: Felder flexibel verarbeiten und berechnen.sed
: Ersetzen und transformierentr
: Zeichen umwandeln oder löschen
👉 Zusammengeschaltet mit Pipes (|
) werden diese Tools zu einem Schweizer Taschenmesser für Textbearbeitung – schnell, skriptbar und überall verfügbar.
CSV = Comma-Separated Values, kann natürlich auch maskierte Kommas in dem Wert enthalten, was dieser Befehl geflissentlich ignoriert oder falsch macht. Verwendet zum CSV-Parsen also bitte nicht diesen Shell-Befehl. Dieser Befehle sind dafür da, auf der Shell schnell mal in eine Datei hineinzuschauen. Wenn das Ergebnis gut genug ist, kann man es auch weiter verarbeiten.↩