Linux Text-Verarbeitung Cheat Sheet
Sie starren auf eine 2 GB große Log-Datei und suchen nach fehlgeschlagenen API-Aufrufen der letzten Stunde. Oder Sie müssen E-Mail-Adressen aus einem CSV-Export extrahieren. Für solche Aufgaben sollten Sie kein Python-Skript schreiben müssen.
Dieses Cheat Sheet behandelt essentielle Linux-Befehle zur Text-Verarbeitung – grep, awk, sed und ihre modernen Pendants – mit praktischen Beispielen für alltägliche Frontend- und Full-Stack-Entwicklungs-Workflows.
Wichtigste Erkenntnisse
grepundripgrepsind Ihre bevorzugten Tools für die Textsuche in Dateien, wobei ripgrep Geschwindigkeitsvorteile und.gitignore-Unterstützung für große Codebasen bietet.sedverarbeitet stream-basierte Such- und Ersetzungsoperationen, aber achten Sie auf Verhaltensunterschiede zwischen GNU- und BSD-Versionen.awkeignet sich hervorragend für spaltenorientierte Verarbeitung von Logs, CSVs und anderen strukturierten Texten.jqschließt die Lücke, diegrepundawkbei der Arbeit mit JSON-Daten hinterlassen.- Der Pipe-Operator (
|) ist das Bindeglied, das diese Befehle zu leistungsstarken, kombinierbaren Pipelines verkettet.
Kern-Suchbefehle: grep und ripgrep
grep durchsucht Dateien nach Mustern und gibt übereinstimmende Zeilen aus. Es ist die Grundlage jeder Text-Verarbeitungs-Pipeline.
# Basic pattern search
grep "error" server.log
# Case-insensitive search
grep -i "warning" app.log
# Show line numbers
grep -n "TODO" src/*.js
# Invert match (lines NOT containing pattern)
grep -v "debug" output.log
# Extended regex (-E enables +, ?, |, and grouping)
grep -E "error|warning|fatal" app.log
# Count matches only
grep -c "404" access.log
ripgrep (rg) ist eine schnellere Alternative, die standardmäßig .gitignore berücksichtigt:
# Recursive search (default behavior)
rg "useState" ./src
# Search specific file types
rg -t js "async function"
# Show context around matches
rg -C 3 "Exception" logs/
Bei großen Codebasen läuft ripgrep typischerweise 2–5x schneller als grep und überspringt automatisch irrelevante Dateien.
Text-Transformation mit sed
sed führt Stream-Editing durch – Such- und Ersetzungsoperationen, ohne eine Datei in einem Editor zu öffnen.
# Replace first occurrence per line
sed 's/http/https/' urls.txt
# Replace all occurrences (global flag)
sed 's/old/new/g' config.txt
# Delete lines matching pattern
sed '/^#/d' config.ini
# In-place editing (GNU sed)
sed -i 's/localhost/127.0.0.1/g' .env
# macOS/BSD requires an empty backup extension
sed -i '' 's/localhost/127.0.0.1/g' .env
Hinweis: Das Verhalten des
-i-Flags unterscheidet sich zwischen GNU- und BSD-sed. Unter macOS sollten Sie immer einen leeren String (-i '') angeben oder eine Backup-Erweiterung festlegen (z.B.-i .bak).
Spaltenverarbeitung mit awk
awk eignet sich hervorragend für strukturierte Texte – Logs, CSVs und durch Leerzeichen getrennte Daten. POSIX-awk bewältigt die meisten gängigen Aufgaben portabel.
# Print specific columns
awk '{print $1, $4}' access.log
# Custom field separator (CSV)
awk -F',' '{print $2}' data.csv
# Filter by condition
awk '$3 > 500 {print $1, $3}' response_times.log
# Sum a column
awk '{sum += $2} END {print sum}' sales.csv
# BEGIN/END blocks for headers
awk 'BEGIN {print "User\tCount"} {print $1, $2}' stats.txt
Wichtige unterstützende Befehle
# Sort and deduplicate (with counts, descending)
sort access.log | uniq -c | sort -rn
# Extract columns by delimiter
cut -d',' -f1,3 users.csv
# Character translation (lowercase to uppercase)
tr '[:lower:]' '[:upper:]' < input.txt
# Count lines in a file
wc -l package.json
# Find files by name pattern
find ./src -name "*.test.js" -type f
Discover how at OpenReplay.com.
JSON-Verarbeitung mit jq
Für moderne Webentwicklung übernimmt jq das JSON-Parsing, das grep und awk nicht sauber bewältigen können:
# Extract a field
jq '.data.users' response.json
# Filter array elements
jq '.items[] | select(.status == "active")' data.json
# Format API response
curl -s https://api.example.com/users | jq '.[].email'
Beachten Sie, dass das erste Beispiel oben eine nutzlose Verwendung von cat vermeidet. jq kann Dateien direkt lesen, daher ist cat response.json | jq '...' unnötig.
Praktische Pipeline-Beispiele
Heutige Fehler aus Logs filtern:
grep "$(date +%Y-%m-%d)" app.log | grep -i error | awk '{print $4, $5}'
Eindeutige IP-Adressen extrahieren:
awk '{print $1}' access.log | sort -u
Größte Dateien in einem Projekt nach Zeilenanzahl finden:
find . -type f -name "*.js" -exec wc -l {} + | sort -rn | head -10
CSV-Daten bereinigen (Spalten extrahieren, Anführungszeichen entfernen, deduplizieren):
cut -d',' -f2,4 export.csv | sed 's/"//g' | sort -u
Schnellreferenz
| Aufgabe | Befehl |
|---|---|
| Nach einem Muster suchen | grep "pattern" file |
| Schnelle rekursive Suche | rg "pattern" |
| Text ersetzen | sed 's/old/new/g' file |
| Spalten extrahieren | awk '{print $1}' file |
| JSON parsen | jq '.key' file.json |
| Sortieren und deduplizieren | sort -u file |
| Zeilen zählen | wc -l file |
Fazit
Beherrschen Sie diese Linux-Befehle zur Text-Verarbeitung und Sie werden die meisten Log-Analysen, Datenextraktionen und Datei-Transformationsaufgaben direkt vom Terminal aus bewältigen. Beginnen Sie mit grep für die Suche, fügen Sie awk für Spaltenarbeit hinzu und greifen Sie zu jq, wenn JSON im Spiel ist. Der Pipe-Operator (|) verbindet alles miteinander und ermöglicht es Ihnen, kleine, fokussierte Befehle zu Pipelines zu komponieren, die dedizierten Skripten ebenbürtig sind.
FAQs
Verwenden Sie cut, wenn Ihre Daten ein konsistentes Einzelzeichen-Trennzeichen haben und Sie nur bestimmte Felder abrufen müssen. Greifen Sie zu awk, wenn Sie Zeilen nach Bedingungen filtern, Berechnungen durchführen oder unregelmäßige Leerzeichen verarbeiten müssen. awk behandelt standardmäßig aufeinanderfolgende Leerzeichen als ein einzelnes Trennzeichen, was es nachsichtiger bei Log-Dateien und Befehlsausgaben macht.
Für die meisten Entwickler-Workflows ja. ripgrep ist schneller, berücksichtigt .gitignore und verwendet sinnvolle Standardeinstellungen wie rekursive Suche. grep ist jedoch standardmäßig auf praktisch jedem Unix-System verfügbar, was es zur sichereren Wahl für portable Shell-Skripte macht. Wenn Sie Skripte schreiben, die auf minimalen Servern oder Containern laufen sollen, bleiben Sie bei grep.
Testen Sie Ihren sed-Befehl immer zuerst ohne das -i-Flag, um die Ausgabe in Ihrem Terminal in der Vorschau anzuzeigen. Wenn Sie bereit sind, direkt zu bearbeiten, verwenden Sie eine Backup-Erweiterung wie sed -i .bak auf GNU-Systemen. Unter macOS oder BSD lautet die Syntax sed -i .bak. Dies erstellt eine Kopie der Originaldatei, bevor Änderungen angewendet werden, und gibt Ihnen eine Rollback-Option.
Ja. jq ist für die Navigation durch tief verschachtelte Strukturen konzipiert. Verwenden Sie Punkt-Notation zum Durchlaufen von Objekten, Klammer-Notation für Arrays und Pipe-Ausdrücke zum Verketten von Filtern. Zum Beispiel durchläuft jq '.data.users[] | select(.active == true) | .email' ein verschachteltes Array, filtert nach einer Bedingung und extrahiert ein Feld – alles in einem Befehl.
Gain control over your UX
See how users are using your site as if you were sitting next to them, learn and iterate faster with OpenReplay. — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data. Check our GitHub repo and join the thousands of developers in our community.