GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでgrepを使用する方法

Linuxターミナルで最も一般的に使用される操作の1つは、テキストファイルの検索と、標準出力またはエラーストリームのフィルタリングです。 Linuxは、そのタスクを簡単に解決できる優れたツールであるgrepを提供します。この記事では、日常業務を確実に簡素化するgrepの最も一般的なユースケースについて説明します。

grepとは

Grepは、Global RegularExpressionPrintの略です。これは、大量のテキストファイル(ログなど)を検索する場合に非常に便利なユーティリティです。

Grepは、システム管理者、開発者、DevOpsエンジニアにとってLinux/Unixで最も役立つコマンドです。このツールの主な目的は、指定されたファイル内の文字列またはパターンをチェックすること、または他のコマンド出力をフィルタリングすることです。

前述のこのパターンは、正規表現として知られています。

grepコマンドは、検索クエリと一致するものが見つかった場合、文字列を含む行をターミナルに出力します。

grepの使用例はたくさんあるので、いつどのように使用できるか見てみましょう。

Linuxへのgrepのインストール

通常、grepはほとんどのLinuxシステムにインストールされており、小さなDockerコンテナにもインストールされています。ただし、システムにインストールされていない場合は、次のコマンドを使用してインストールできます。例:

apt-get updateapt-get install -y grep

grepの使用例

記事のこの部分では、grepを使用する最も一般的な例について説明します。

コマンド出力のフィルタリング

grepコマンドを使用して、指定したパターンに一致する任意のLinuxコマンド出力から任意の行を検索および印刷できます。

この例では、UbuntuシステムにどのPython3パッケージがあるかを確認します。

dpkg -l | grep python3

この例では:

  • dpkg -l <​​/ code> インストールされているすべてのパッケージを印刷します
  • grep dpkgをフィルタリングします python3を含む文字列のみを出力および出力します 文字列

同様に、CPUモデル情報を表示できます。例:

grep -i 'Model' /proc/cpuinfo
ファイル内の文字列を検索する

この例では、grepコマンドはファイル「/ etc / passwd」で文字列「root」を検索し、文字列が見つかった場合はそれを出力します。

通常、このコマンドを使用して、システムに指定された名前のユーザーアカウントがあるかどうかを確認します(例ではroot in out):

grep root /etc/passwd
複数のファイルを検索

複数のファイルの文字列を一度に見つけるには、grepコマンドを使用して、ファイル名を1行で指定します。正規表現を使用して、マスクでファイルを検索できます。

公開されているApacheaccess.logをダウンロードしましょう:

 mkdir -p /var/log/httpd
 cd /var/log/httpd
 wget http://www.almhuette-raith.at/apache-log/access.log 

それでは、このファイルを10000行ずつ複数のファイルに分割しましょう:

これで、ファイルを検索して500HTTPサーバーエラーを探すことができます。

grep ' 500 ' xac xad

現在の作業ディレクトリ内のすべてのファイルを検索するには、 *を使用します パターンの後。

以下の例では、grepコマンドはすべてのファイルで500のサーバーエラーを検索します。

grep ' 500 ' *
単語全体の検索

-wを使用 grepコマンドのオプションを使用すると、単語パターンを含むファイルを検索できます。

grep -w 'Windows XP' *
大文字と小文字を区別しない検索

grepコマンドは、検索パターンの大文字と小文字の区別に関係なく検索を実行できるほど賢いです。

そのためには、 -iを使用する必要があります 引数として。

これは同じ例ですが、現在、大文字と小文字を区別しないフィルタリングを行っています:

grep -i -w 'windows xp' *
検索パターンを含む出力ファイル

-lを使用できます 検索されたパターンを含むすべてのファイル名を表示するオプション:

grep -l -i -w 'windows xp' *
ファイルごとの一致数

すべてのファイルでパターンが一致した回数を知りたい場合は、 -cを追加します。 オプション:

grep -c -i -w 'windows xp' *
検索されたパターンの前の行数

検索パターンの前にファイル内の行を表示するには、 -Bを追加します 引数の後にファイルから取得する数の数:

grep -B 3 -i -w 'windows xp' xaf
検索されたパターンの後の行数

同様に、 -Aを使用できます 検索されたパターンの後に印刷する行数を指定する引数:

grep -A 3 -i -w 'windows xp' xaf
検索パターン一致の行番号を印刷

見つかった検索パターンの行番号を表示するには、 -nを使用できます。 引数:

grep -n -i -w 'windows xp' xaf
文字列の先頭に一致する

次の例では、grepコマンドを使用して、特定のIPアドレスから発信されたすべてのリクエストを検索します。

検索されるすべての行は、 5.34.180.192から開始する必要があります 用語。

grep "^5.34.180.192" xaf
文字列の終わりを一致させる

$を追加します パターンの最後に移動して、検索された文字列で終わる行を検索します:

grep "Chrome/62\" \"-\"$" xaf

検索文字列に"が含まれるとすぐに シンボル、 \でエスケープしています 。

複数パターン検索

grepを使用して、一度に複数のパターンを検索できます。 -eを追加します すべての検索パターンの前の引数:

grep -e "Chrome/62\" \"-\"$" -e "15/Mar/2021:08:35:23" xaf

ここでは、 Chrome / 62 ""-"で終わるファイル内のすべての文字列を検索しています そして 特定の日時が含まれている15/ Mar / 2021:08:35:23

出力色の変更

色付きの出力では読みやすさが向上するため、 GREP_COLOR を設定することで、好きな色に変更できます。 環境変数:

GREP_COLOR='1;35' grep --color=always 'admin' /etc/passwd

GREP_COLOR変数の詳細については、grepの公式ドキュメントを参照してください。

概要

grepコマンドは、テキストファイルまたはコマンドの出力結果のコンテンツをフィルタリングする場合に非常に便利です。この記事では、シェルエクスペリエンスを合理化する最も一般的に使用されるgrepコマンドについて説明しました。

この記事がお役に立てば幸いです。もしそうなら、私たちがそれを世界に広めるのを手伝ってください。


Linux
  1. Linuxgrepコマンドの使用方法

  2. LinuxでSuコマンドを使用する方法

  3. Linux screen コマンドの使用方法

  1. Linux/UNIXでgrepコマンドを使用する方法

  2. LinuxでDisownコマンドを使用する方法

  3. LinuxSSコマンドの使用方法

  1. Linuxnohupコマンドの使用方法

  2. LinuxでGrepコマンドを使用する方法+便利なGrepの例

  3. LinuxでduCommandを使用する方法