私は、の違いについてを散策したいのですが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 mysql
7312のようなプロセスIDを返すコマンドを使用します。
pgrep
マニュアルから:マッチングに使用されるプロセス名は、/ proc / pid / statの出力に存在する15文字に制限されています。-fオプションを使用して、完全なコマンドライン/ proc / pid / cmdlineと照合します。