Es gibt viele Erklärungen zum grep-Befehl im Internet, und sie sind im Grunde eine grobe Übersetzung des man-Befehls. Ehrlich gesagt werde ich es vergessen, nachdem ich es gelesen habe! Persönlich denke ich, dass der beste Weg, Befehle zu lernen, darin besteht, die reale Umgebung zu simulieren, einige Befehlskombinationen aufzuschreiben, die verwendet werden können, und sie dann langsam zu verarbeiten. Zumindest bin ich so hierher gekommen. Am Anfang war es im Wesentlichen reines Auswendiglernen, und dann erweiterte ich langsam meinen Horizont und sammelte mehr. Okay, kommen wir zum Punkt und sprechen über den großartigen grep-Befehl.
grep ist die Abkürzung für General Regular Expression Parser. Wir können es einfach als Suchbefehl im Linux-System verstehen. Gehen wir als Nächstes direkt zum Beispiel über:
1. Suchen Sie nach der angegebenen Zeichenfolge
in der Datei /etc/passwd, Suchzeichenfolge guolei:
grep 'guolei' /etc/passwd
Beachten Sie, dass die Anführungszeichen für guolei weggelassen werden können. Wenn die Suchzeichenfolge jedoch Leerzeichen enthält oder Sie reguläre Ausdrücke verwenden, müssen Sie diese hinzufügen.
2. Suchen Sie nach der angegebenen Zeichenfolge in mehreren Dateien
Suchen Sie im aktuellen Verzeichnis nach Dateien, die die Zeichenfolge guolei enthalten:
grep -r guolei *
Hinweis: -r ist die Abkürzung für rekursiv, was rekursive Suche bedeutet.
Suchen Sie in der .java-Datei im aktuellen Verzeichnis nach Dateien, die die Zeichenfolge guolei enthalten:
grep -r guolei *.java
Manchmal sind unsere Suchergebnisse möglicherweise mehr, wir können sie mit dem Befehl less anzeigen Das Ergebnis ist
grep -r guolei *.java | less
oder es gibt viele Suchergebnisse. Wir müssen nur die Dateinamen auflisten:
grep -rl guolei *.java
Es gibt eine andere Anforderung, die häufiger vorkommt Suchen Sie ein Verzeichnis, das die Datei mit der Zeichenfolge enthält. Beachten Sie, dass der obige Befehl nicht rekursiv durchsucht werden kann. Beispielsweise möchten wir rekursiv nach allen .java-Dateien im aktuellen Verzeichnis suchen, die die Zeichenfolge guolei enthalten:
find . -type f -name *.java -exec grep -il guolei {} \;
3. Ignorieren Sie bei der Suche die Groß-/Kleinschreibung
Ignorieren Sie bei der Suche nach Guolei die Groß-/Kleinschreibung:
grep -ri guolei *
Hinweis: -i ist die Abkürzung für Groß-/Kleinschreibung ignorieren, was Groß-/Kleinschreibung ignorieren bedeutet.
4. Listen Sie die Zeilennummer in den Suchergebnissen auf
Listen Sie in den Suchergebnissen die Zeilennummer auf, in der die Zeichenfolge erscheint:
grep -rn guolei *.java
Beachten Sie, dass -n die Abkürzung für Zahl ist, was Zeilennummer bedeutet.
5. Rückwärtssuche
In der tatsächlichen Entwicklung gibt es eine andere Situation, die häufiger vorkommt. Wir müssen in einem Verzeichnis suchen, das dies tut nicht enthalten Datei einer bestimmten Zeichenfolge:
grep -riv guolei * | less
Hinweis: -v ist die Abkürzung für reverse, was umgekehrt bedeutet. Das obige Beispiel sucht nach Dateien im aktuellen Verzeichnis, die kein Guolei enthalten.
6. Verwenden Sie grep in Pipelines
Wir verwenden grep häufig in Pipeline-Befehlen, dies ist die häufigste. Beispielsweise möchten wir im aktuellen System nach dem MySQL-Prozess suchen:
ps -ef | grep mysql
oder Dateien mit der Endung html im aktuellen Verzeichnis auflisten:
ls | grep 'html$'