Kombination von grep
mit Pipelines und Befehlssequenzen
In diesem Schritt werden wir untersuchen, wie man grep
in Kombination mit Pipelines und Befehlssequenzen für fortgeschrittene Textverarbeitung einsetzt.
Beginnen wir damit, alle Zeilen in Ihrer .zshrc
-Datei zu suchen, die "PATH" enthalten, und diese zu zählen:
grep "PATH" ~/.zshrc | wc -l
Diese Pipeline verwendet zunächst grep
, um Zeilen mit "PATH" zu finden, und leitet dann die Ausgabe an wc -l
weiter, um die Zeilen zu zählen.
Jetzt verwenden wir eine Befehlssequenz, um zunächst nach "PATH" und dann, wenn "PATH" gefunden wurde, nach "HOME" zu suchen:
grep "PATH" ~/.zshrc && grep "HOME" ~/.zshrc
Dies zeigt nur die Zeilen mit "HOME" an, wenn Zeilen mit "PATH" gefunden wurden.
Versuchen wir ein komplexeres Beispiel. Wir suchen nach Zeilen, die mit "bin" enden, in /etc/passwd
, sortieren sie und zeigen die ersten 5 an:
grep "bin" /etc/passwd | sort | head -n 5
Diese Pipeline führt drei Aufgaben aus:
- Findet Zeilen, die "bin" enthalten.
- Sortiert diese Zeilen alphabetisch.
- Zeigt nur die ersten 5 Zeilen des Ergebnisses an.
Schließlich kombinieren wir alles, was wir gelernt haben. Wir suchen nach Zeilen, die "sh" enthalten, in /etc/passwd
, zählen sie und je nach Anzahl der gefundenen Zeilen zeigen wir entweder die Zeilen an oder eine Nachricht:
grep "sh" /etc/passwd | wc -l | {
read count
[ $count -gt 5 ] && grep "sh" /etc/passwd || echo "Found $count lines, not enough to display."
}
Dieser komplexe Befehl führt folgende Schritte aus:
- Sucht nach Zeilen, die "sh" enthalten.
- Zählt diese Zeilen.
- Wenn die Anzahl größer als 5 ist, werden die Zeilen angezeigt.
- Wenn die Anzahl 5 oder weniger ist, wird eine Nachricht mit der Anzahl der gefundenen Zeilen angezeigt.
Versuchen Sie, diese Befehle auszuführen und experimentieren Sie mit Ihren eigenen Kombinationen!