ホームページ  >  記事  >  運用・保守  >  シェルプログラミング - grepコマンドの使い方は?

シェルプログラミング - grepコマンドの使い方は?

PHP中文网
PHP中文网オリジナル
2017-06-20 11:12:492477ブラウズ

正規表現を学ぶ前に、まずそれを明確にし、心に留めておく必要があります:

Linux では、ワイルドカードはシェルによって解釈されますが、正規表現はコマンドの説明によって解釈されます。 2つを混同します。覚えて! ! !

通常、 3 つのテキスト処理ツール/コマンド: grep、sed、awk があり、その 3 つすべてが正規表現を解釈できます。 grepコマンドの使い方を紹介します。

1. grep コマンドを使用して、ファイル内のコンテンツを検索します

grep および egrep コマンドは、1 つ以上のファイルのコンテンツ内の特定の文字パターンを検索できます、および正規表現とも呼ばれます。 パターンには、単一の文字、文字列、単語、または文を指定できます。

正規表現は、文字列のセットを記述するパターンです。正規表現の構築は、演算子を使用して小さな式を新しい式に結合することにより、数式に基づいてモデル化されます。正規表現は、パターンの生成に使用されるプレーン テキスト リテラルまたは特殊文字のいずれかです。検索パターンをさらに定義するために、grep コマンドは次の正規表現メタキャラクター (ワイルドカードとも呼ばれます) をサポートしています。

ps: 正規表現言語は、リテラル (通常の) テキスト文字とメタキャラクターという 2 つの基本的な文字タイプで構成されます。メタキャラクターは正規表現の処理能力を与えます。いわゆるメタキャラクタは、正規表現において特別な意味を持つ特殊文字を指します。これを使用して、ターゲット オブジェクト内で先頭の文字 (つまり、メタキャラクタの前にある文字) の出現パターンを指定できます。

c*: 0 個以上の文字と一致します c

.: 任意の 1 つの文字とのみ一致します (改行を除く)

[xyz]: 角括弧

の任意の文字と一致します[^xyz]: 角括弧内の文字を除くすべての文字と一致します

^: 行の先頭をロックします

$: 行の末尾をロックします

基本的な正規表現では、 *、+、{}、|、() などのメタ文字は元の意味を失っています。元の意味を復元したい場合は、*、+ などのバックスラッシュを前に付ける必要があります。

grep コマンドは、各ファイルまたは標準出力で特定のパターンを検索するために使用されます。 grep コマンドを使用すると、指定した文字パターンを含む各行が画面に表示されます。 grep コマンドの構文形式は次のとおりです。

grep オプション パターン ファイル名

このうち、オプションgrep コマンドの検索方法を変更できます。-w オプションを除き、他のすべてのオプションは egrep および fgrep コマンドで使用できます。 grep コマンドの一般的なオプションは次のとおりです:

-c (count): パターンを含む行数のみをリストします

-i (ignore): パターン内の文字の大文字と小文字を無視します

-l (リスト): 一致する行を含むファイル名のリスト

-n: 一致する行の前の行番号のリスト

-v: 一致するパターンのない行のリスト (反転)

-w:式を完全な単語として検索し、部分的に一致する行を無視します

-q : サイレント モード、出力なし、実行が成功したかどうか、つまり、目的のコンテンツがフィルターされているかどうかを判断するには $? を使用する必要があります

-A n : 一致した場合、一致した行と次の n 行が一緒に印刷されます。

-B n : 一致した場合、一致した行と前の n 行が印刷されます。

-C n : 一致した場合、一致した行とその前後の n 行が一緒に印刷されます

ps: 複数のファイルが検索された場合、grep コマンドの結果ファイル内で見つかったパターンに一致するファイルのみを表示します。

単一のファイルを検索している場合、grep コマンドの結果には、一致するパターンを含むすべての行が表示されます。

以上がgrepコマンドの基本的な使い方です。ただし、単純な正規表現では検索したいコンテンツを見つけられない場合があります。モード 1 とモード 2 の両方を満たすデータ行を検索したい場合は、egrep コマンドが便利です。

egrepコマンドの構文形式はgrepコマンドと同じです。ただし、egrep コマンドは、拡張正規表現のメタキャラクターを使用して、1 つ以上のファイルの内容から特定のパターンを検索するために使用されます。拡張正規表現メタキャラクタには、grep コマンドで使用される正規表現メタキャラクタが含まれており、さらに次のような追加のメタキャラクタも追加されます。

+: 1 つ以上の先頭文字と一致します。 文字

a|b: a と一致します。または b

(RE): 括弧内の正規表現 RE と一致し、egrep コマンドの使用法を理解しています。 grep コマンドのすべてのオプション egrep を使用できるため (egrep の方が強力です)、便宜上、egrep コマンドを使用して皆さんに説明します:

例 1: ファイル内の root を含む行を表示します。 /etc/passwd

例 2: /etc/passwd 内の bash を含む行をすべて出力し、その上下 2 行の内容も出力します

例3: /etc /passwdがnologin

example4を含むいくつの行を示します: /etc /passwdのどの線がルートを含んで追加して追加します行番号 1 つの出力

例 5:

新しいユーザー abominable、a​​bominate、anomie、atomize を作成し、それらに一致する正規表現を作成します

例 6: 新しいユーザーを作成します Alex213sb、Wpq2222b、yH438PIG、egon666、egon

ユーザー名が文字 + 数字 + 文字で構成される行をフィルターで除外します

例7: /etc ディレクトリ内の root を含むすべてのファイル名を表示します

例 8: /etc/ssh/sshd_config 内のすべてのコメントとすべての空白行をフィルターで除外します

上記の例はほんの一部です。熱心に練習すれば、すぐに grep コマンドの使い方をマスターできるようになります ^^

以上がシェルプログラミング - grepコマンドの使い方は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。