grep、pgrep、egrep、fgrepの違いは何ですか?


回答:


85

grep、pgrep、egrep、fgrepの違い(Linux):

grep

grepは、「Global Regular Expressions Print」の頭字語です。grepは、指定されたファイルを1行ずつスキャンして、パターンを含む行を返すプログラムです。パターンは、文字をメタ文字として解釈して一連の文字列を指定する式です。たとえば、アスタリスクのメタ文字(*)は、「0個以上の先行要素」を意味すると解釈されます。これにより、ユーザーはgrepコマンドに短い一連の文字とメタ文字を入力して、コンピューターにファイルの一致する行を表示させることができます。

標準のgrepコマンドは次のようになります。

grep <flags> '<regular expression>' <filename>

grepは、検索結果を画面(stdout)に出力し、次の終了値を返します。

0    A match was found.
1    No match was found.
>1   A syntax error was found or a file was inaccessible 
     (even if matches were found).

いくつかの一般的なフラグは次のとおり-cです。成功したマッチの数をカウントし、実際のマッチを出力-iしない、検索大文字小文字を区別しない、-n各マッチ出力の前に行番号を出力する-v、正規表現の補数を取る(つまり、一致しない)、および-l式に一致する行を持つファイルのファイル名を出力します。

白rep

egrepは、「Extended Global Regular Expressions Print」の頭字語です。

egrepの「E」は、パターンを正規表現として扱うことを意味します。egrepで「ERE」と省略された「拡張正規表現」が有効になります。egrepの(と同じでgrep -E扱い)+?|(、および)メタキャラクタとして。

基本的な正規表現では(grepを持つ)、メタ文字?+{|(、及び)その特別な意味を失います。あなたはメタ文字としてこれらの文字を治療するためのgrepをしたい場合は、それらをエスケープ \?\+\{\|\(、と\)

たとえば、ここでgrepは基本的な正規表現を使用し、プラスが文字通り処理され、プラスが含まれる行が返されます。

grep "+" myfile.txt

一方、egrepは「+」をメタ文字として扱い、プラスは「1回以上」と解釈されるため、すべての行を返します。

egrep "+" myfile.txt

ここでは+、egrepによってメタ文字として扱われたため、すべての行が返されます。通常のgrepは、リテラルの行のみを検索し+ます。

fgrep

fgrepは「Fixed-string Global Regular Expressions Print」の頭字語です。

fgrep(grep -Fと同じ)は固定または高速grepであり、grepとして動作しますが、正規表現のメタ文字を特別なものとして認識しません。複雑なパターンではなく単純な文字列のみを処理するため、検索はより速く完了します。

たとえば、.bash_profileでリテラルドット(。)を検索する場合、ドットは「ワイルドカード、任意の単一文字」を意味するメタ文字であるため、ドットをエスケープする必要があるため、grepの使用は困難です。

grep "." myfile.txt

上記のコマンドは、myfile.txtのすべての行を返します。代わりにこれを行います:

fgrep "." myfile.txt

次に、リテラル '。'を持つ行のみ それらが返されます。fgrepを使用すると、メタ文字をエスケープする必要がなくなります。

pgrep

pgrepは、「Process-ID Global Regular Expressions Print」の頭字語です。

pgrepは、現在実行中のプロセスを調べて、選択基準とstdoutに一致するプロセスIDをリストします。pgrepは、プロセスのプロセスID整数だけを知りたい場合に便利です。たとえば、mysqlプロセスのプロセスIDのみを知りたい場合、pgrep mysql7312のようなプロセスIDを返すコマンドを使用します。


pgrepマニュアルから:マッチングに使用されるプロセス名は、/ proc / pid / statの出力に存在する15文字に制限されています。-fオプションを使用して、完全なコマンドライン/ proc / pid / cmdlineと照合します。
パブロA
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.