私は、の違いについてを散策したいのですがgrep、pgrep、egrep、そしてfgrep、どのように私はそれらを使用します。
私は、の違いについてを散策したいのですがgrep、pgrep、egrep、そしてfgrep、どのように私はそれらを使用します。
回答:
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式に一致する行を持つファイルのファイル名を出力します。
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は「Fixed-string Global Regular Expressions Print」の頭字語です。
fgrep(grep -Fと同じ)は固定または高速grepであり、grepとして動作しますが、正規表現のメタ文字を特別なものとして認識しません。複雑なパターンではなく単純な文字列のみを処理するため、検索はより速く完了します。
たとえば、.bash_profileでリテラルドット(。)を検索する場合、ドットは「ワイルドカード、任意の単一文字」を意味するメタ文字であるため、ドットをエスケープする必要があるため、grepの使用は困難です。
grep "." myfile.txt
上記のコマンドは、myfile.txtのすべての行を返します。代わりにこれを行います:
fgrep "." myfile.txt
次に、リテラル '。'を持つ行のみ それらが返されます。fgrepを使用すると、メタ文字をエスケープする必要がなくなります。
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と照合します。