grep は、すべての Linux ディストリビューションにプリインストールされている強力なファイル パターン検索ツールです。何らかの理由で、システムにプリインストールされていない場合は、システムのパッケージ マネージャー (Debian/Ubuntu システムでは apt-get、RHEl/CentOS/Fedora システムでは yum) を通じて簡単にインストールできます。
$ sudo apt-get install grep #Debian/Ubuntu $ sudo yum install grep #RHEL/CentOS/Fedora
grep コマンドを使い始める最も簡単な方法は、実際の例を使用して参加してもらうことです。 。
1. ファイルを検索して見つける
コンピューターに新しい Ubuntu をインストールし、その後 Python をアンインストールする予定だとします。 Web を閲覧してチュートリアルを探していますが、2 つの異なるバージョンの Python が使用されていることがわかり、Ubuntu インストーラーがシステムにインストールした Python のバージョンも、どのモジュールがインストールされたかもわかりません。この問題を解決するには、次のコマンドを実行するだけです:
$ sudo dpkg -l | grep -i python
出力例
ii python2.7 2.7.3-0ubuntu3.4 対話型高水準オブジェクト指向言語 (バージョン 2.7)
ii python2.7-minimal 2.7.3-0ubuntu3.4 Python 言語の最小限のサブセット (バージョン 2.7)
ii python-openssl 0.12-1ubuntu2.1 OpenSSL ライブラリの Python ラッパー
ii python-pam 0.4。 2-12.2ubuntu4 PAM ライブラリへの Python インターフェイス
まず、dpkg -l を実行して、システムにインストールされている .deb パッケージを一覧表示します。次に、パイプラインを使用して出力結果をコマンド grep -ipython に転送します。このステップは、結果を grep に転送し、Python を含むすべての項目をフィルタリングして結果を返すと簡単に説明できます。 grep では大文字と小文字が区別されるため、-i オプションは大文字と小文字を無視するために使用されます。より詳細な検索を実行する予定がない限り、オプション -i を使用することをお勧めします。
2. ファイルの検索とフィルター
grep を使用して、1 つ以上のファイルを検索およびフィルターすることもできます。次のようなシナリオを見てみましょう:
Apache Web サーバーに問題があり、質問を投稿するには多くの専門 Web サイトの中から 1 つを見つける必要があります。親切に返信してくれた人は、/etc/apache2/sites-available/default-ssl ファイルの内容を貼り付けるように求めてきました。すべてのコメント行を削除できれば、あなたにとっても、あなたを助けてくれる人たちにとっても、ファイルを読む他の人たちにとっても、問題を見つけるのが簡単になると思いませんか?もちろん簡単にできますよ!これを実行するだけです:
$ sudo grep -v "#" /etc/apache2/sites-available/default-ssl
-v オプションは、grep コマンドにその出力を反転するように指示します。これは、一致する項目を出力しないことを意味します。 、逆の操作を行い、一致しない項目をすべて出力します。この例では、# が付いている行はコメント行です (注釈: 実際、このコマンドは正確ではなく、「#」を含む行がすべてコメント行であるわけではありません。コメント行を正確に一致させる方法については、次の情報を参照してください)正規表現)。
3. すべての mp3 ファイルを検索します
grep コマンドは、標準出力から結果をフィルタリングするのに非常に便利です。たとえば、さまざまな形式の音楽ファイルが詰まったフォルダーがあるとします。アーティスト jayZ のすべての mp3 形式の音楽ファイルを見つける必要があります。その中に混合オーディオ トラックがあってはなりません。この魔法は、パイプを介して find コマンドと grep を組み合わせて使用することで実現できます。
$ sudo find . -name ".mp3" grep -i JayZ -vi "remix" | この例では、このコマンドは、接尾辞 .mp3 を持つすべてのファイルを出力し、それらを grep -i にパイプして「JayZ」という名前のファイルをフィルターして出力し、さらに grep -vi にパイプして「remix」を含むファイルをフィルターで除外します
5. 一致する文字列の前後の行番号を出力します
grep コマンドの -C オプションは例 4 と非常に似ていますが、文字列の前後の行と一致しません。ただし、両方向で一致する行を出力します (注釈: 上記のメモリートリックと同じ: -C=center、これを中心にします): $ sudo ifconfig -C 2 lo
7 を使用して、一致する行を検索します。指定された文字列に基づいてファイル内の数値を取得します
grep コマンドの -n オプションは、コンパイル エラーが発生したときに、ファイルのどの行が検索している内容であるかをデバッグする必要がある場合に非常に便利な機能です:
$。 sudo grep -n "main" setup.py
8. すべてのディレクトリを再帰的に検索します
現在のフォルダー内で文字列を検索する必要があり、現在のフォルダー内に多くのサブディレクトリがある場合は、再帰的検索を容易にするために -r オプションを指定できます: $ sudo grep -r "function" *
9 .Perform完全一致検索
grep コマンドに -w オプションを渡すと、文字列内の完全一致検索が実行されます (注釈: ワイルドカードではなく、検索対象の単語が含まれます)。たとえば、次のように入力すると:
$ sudo ifconfig | grep -w "RUNNING"
は引用符内に一致を含む行を出力します。さらに、これを試すこともできます:
$ sudo ifconfig | grep -w "RUN"
この一致を検索するとき、検索されたものにそのような単一の単語が存在しない場合は、何も返されません。
10. Gzip 圧縮ファイル内の検索
grep の派生アプリケーションにも注目したいと思います。 1 つ目は zgrep です。これは zcat に非常に似ており、gzip 圧縮ファイルに使用できます。 grep と同様のコマンド オプションがあり、同じ方法で使用されます:
$ sudo zgrep -i error /var/log/syslog.2.gz
11. ファイル内の正規表現と一致する
egrep は別の派生アプリケーションです。 、これは「拡張グローバル正規表現」の略です。 + ? や () などのより多くの正規表現メタ文字を認識します。 Egrep は、ソース コード ファイルを検索する場合に非常に便利なツールです。断片化されたコード ファイルを検索するニーズもあるため、このような検索機能が必要になります。 grep コマンドのオプション -E を使用して有効にできます。
$ sudo grep -E
12. 固定一致文字列の検索
fgrep は、ファイルまたはファイルリスト内の固定スタイルの文字列を検索するために使用されます。機能は grep -F と同じです。 fgrep の一般的な使用法は、スタイルを含むファイルを渡すことです:
$ sudo fgrep -f file_full_of_patterns.txt file_to_search.txt
これは grep コマンドの始まりにすぎません。さまざまな実装が可能で、あらゆる種類のニーズに非常に役立ちます。実行する 1 行のコマンドに加えて、grep は cron タスクまたは実行用の自動シェル スクリプトとして作成することもできます。興味を持って、man ページのオプションを試し、目的に応じた grep 式を作成してください。