grep コマンドについてはネット上にたくさんの説明があり、基本的に man コマンドの意訳です。正直、読んでも忘れてしまいます。個人的には、コマンドを学習する最善の方法は、実際の環境をシミュレートし、使用される可能性のあるコマンドの組み合わせをいくつか書き留めてから、それをゆっくりと理解することだと考えています。少なくとも私はそうしてここに来ました。最初は基本的に暗記でしたが、時間が経つにつれて徐々に視野を広げていきました。さて、本題に入り、素晴らしい grep コマンドについて話しましょう。
grep は一般的な正規表現パーサーの略称であり、単純に Linux システムの検索コマンドとして理解できます。次に、例に直接進みましょう:
1. 指定された文字列
を検索します。 /etc/passwd ファイルで、文字列 guolei を検索します:
grep 'guolei' /etc/passwd
guolei の引用符は次のとおりです。ただし、検索文字列にスペースが含まれている場合、または正規表現を使用している場合は、スペースを追加する必要があります。
2. 複数のファイルで指定された文字列を検索します
現在のディレクトリで、文字列 guolei を含むファイルを検索します:
grep -r guolei *
注: -r は recursive の略で、再帰的検索を意味します。
現在のディレクトリの .java ファイルで、guolei:
grep -r guolei *.java
という文字列を含むファイルを検索します。場合によっては、検索結果がさらに多くなる場合があります。less コマンドを組み合わせて結果を表示することもできます
grep -r guolei *.java | less
、またはさらに多くの検索結果が表示される場合もあります結果、ファイル名をリストするだけで済みます:
grep -rl guolei *.java
特定のディレクトリで指定された文字列を含むファイルを検索する必要があることがよくあります。上記のコマンドは再帰的に検索できないことに注意してください。たとえば、文字列 guolei:
find . -type f -name *.java -exec grep -il guolei {} \;
3 を含む現在のディレクトリ内のすべての .java ファイルを再帰的に検索したいとします。 i は Ignore case の略で、大文字と小文字を区別しないことを意味します。
4. 検索結果の行番号をリストします
検索結果で、文字列が表示される行番号をリストします:
grep -ri guolei *
-n は、行番号を意味する number の省略形であることに注意してください。 。
5. 逆検索
実際の開発では、特定のディレクトリ内で特定の文字列を含まないファイルを検索する必要がある場合があります:
grep -rn guolei *.java
注: -v is reverse リバースという意味の略称。上記の例では、現在のディレクトリで guolei を含まないファイルを検索します。
6. パイプラインで grep を使用する
パイプライン コマンドでも grep を使用することが多く、これが最も一般的です。たとえば、現在のシステムで mysql プロセスを検索する場合:
grep -riv guolei * | less
、または現在のディレクトリで html で終わるファイルをリストする場合:
ps -ef | grep mysql