Anonim

グローバル正規表現printまたは単なるgrepは、UnixおよびLinuxシステムで最も汎用性の高い一般的なコマンドの1つです。 このコマンドは、単一または複数の入力ファイルと一致するパターン行を探します。 その結果、一致する行を含む標準出力が得られます。

ファイルを指定しない場合、grepは読み出しに標準入力を使用し、別のコマンドの出力になる可能性が最も高くなります。 全体的に、grepは、ファイル名の有無にかかわらず、簡単な構文を備えています。

この記事では、grep構文の簡単な概要と、ファイル名の有無に関係なく使用できるいくつかの基本的なコマンドを提供します。

始める前に

すべてのgrepコマンドは同じ構文に従い、各パラメーターには特定の機能があります。 サンプル行は次のとおりです。

grepパターン

grepで多くのオプションを使用してコマンド出力を制御できます。この番号はゼロから始まります。 PATTERNは、適用する検索パターンを示します。 FILEに関しては、ここでファイル名が使用されますが、パラメーターはゼロに設定できます。

コマンド出力での文字列検索

前述のように、特定の入力ファイルを使用する必要はありません。 別のコマンドの出力をgrepで使用して、パターンに完全に一致する行を取得できます。 これを使用して、システム上でアクティブなプロセスを判別できます。 これはサンプルのコマンド構文です。

$ ps -ef | grep www-data

得られる出力は次のようになります。

www-data 18247 12675 4 16:00? 00:00:00 php-fpm:プールwww
ルート18272 17714 0 16:00 pts / 0 00:00:00 grep –color = auto –exclude-dir = .bzr –exclude-dir = CVS –exclude-dir = .git –exclude-dir = .hg –exclude- dir = .svn www-data
www-data 31147 12770 0 Oct22? 00:05:51 nginx:ワーカープロセス
www-data 31148 12770 0 Oct22? 00:00:00 nginx:キャッシュマネージャープロセス

grepプロセスを特徴とするコマンドラインを除外する方法があります。 これには、 $ ps -ef |を使用する必要があります。 grep www-data | grep -v grepコマンド。

Grepワード検索

grepコマンドを使用して、システム上のファイル内の特定の単語を検索できます。 実際、単語全体を入力する必要はありません。 たとえば、 gnuを使用するだけで、コマンドはこれらの3文字が含まれるすべての単語を出力します。 コマンド構文は次のとおりです。

$ grep gnu / usr / share / words

コマンドを実行すると、出力は次のようになります。

シグナス
ヌー
間reg
lgnu9d
リグナム
マグナム
マグナソン
ミズゴケ
ウイングナット

一方、特定の単語または文字列のみを検索し、他のすべてを除外できます。 そのためには、構文に-wまたは-word-regexpを追加する必要があります。 この場合、コマンド例は次のようになります– $ grep -w gnu / usr / share / words

注:文法上の目的で、一部のコマンドは最後に完全に停止します。 grepにはその句読点は必要ありません。 コマンドをコピー/貼り付けするときに除外します。

Grepの大文字と小文字は区別されますか?

grepコマンドはすべて、デフォルトで大文字と小文字を区別します。 つまり、小文字と大文字を使用すると、コマンド自体に違いが生じます。 ただし、コマンドラインに– i- ignore – case )を追加して、システムが大文字と小文字の両方の単語を検索できるようにすることができます。

たとえば、入力コマンドは次のようになります$ grep -i Zebra / usr / share / words 。 ゼブラを検索するときに、出力が大文字と小文字の任意の組み合わせに一致するようにします。

行番号

-line-numberオプションまたは単に-nを使用して、特定の検索パターンに一致する文字列を含む行数を決定します。 その結果、行番号が前に付いた標準出力が得られます。

正確なコマンドは次のようになります: $ grep -n 10000 / etc / services 。 実行すると、出力は10000行で見つかったすべての一致を提供します。 以下のサンプルをご覧ください。

10423:ndmp 10000 / tcp
10424:ndmp 10000 / udp

フォルダー内のファイル

ファイル名の代わりにgrepコマンドの後ろにアスタリスクを付けることができます。 再びgnu基準を使用すると、コマンドはこの$ grep gnu *のようになり、出力にはgnu inを含むファイルがリストされます。この種のコマンドは行を返すことに注意することが重要です。

注: grepの場合、行とは、指定された区切りまで実行される文字のシーケンスを指します。 検索を絞り込む場合を除き、出力には情報の段落全体が含まれる場合があります。

Grepで次の一歩を踏み出す

このガイドは、grepでできることのほんの一部にすぎません。 すべての可能性と目的を達成するには時間がかかるかもしれませんが、構文はかなり単純な原則に従います。 そして、ある程度練習すれば、ファイル名の有無にかかわらず、完全に検索を絞り込むことができます。

ファイル名なしでgrepする方法