GNU/Linux >> Linux の 問題 >  >> Linux

Grepを使用してファイルでパターン検索を実行する方法

grepコマンドに関する最初の記事では、このツールを使用して単語のみを検索する方法、2つの単語を検索する方法、一致する単語を含む行をカウントする方法など、ツールが提供する多くの機能について説明しました。これらとは別に、このツールは、より理解しやすく便利な機能をいくつか提供します。この記事では、それらのいくつかについて説明します。

このチュートリアルで言及されているすべての例は、Ubuntu14.04LTSでテストされていることに注意してください。また、このチュートリアルのgrep関連のすべての例では、次のファイル(test_file1.txt)を使用します。

Grepで大文字と小文字を区別しない検索

デフォルトでは、grepは大文字と小文字を区別します。つまり、たとえば、「ABC」と「abc」を別々に扱います。ただし、大文字と小文字を区別せずに検索する場合は、 -iを使用できます。 コマンドラインオプション。

grep -i [string-to-be-searched] [filename]

例:

grep -i "linux" test_file1.txt

:パターン(たとえば、上記の例では「linux」)だけでなく、grepのmanページには、-iオプションを使用すると、入力ファイルの大文字と小文字の区別も無視されるようになると記載されています。抜粋は次のとおりです:

 -i, --ignore-case
Ignore case distinctions in both the PATTERN and the input files. (-i is specified by POSIX.)

ただし、入力ファイルに関連する動作を最後に再現することはできませんでした。

Grepで一致する文字列を含む行を含む特定の一致しない行を表示する

このツールを使用すると、一致した文字列を含む行の後、前、または周囲に指定された数の行を表示することもできます。

-Aを使用する 一致した行の後に「N」行を出力するコマンドラインオプション。

$ grep -A N [string-to-be-searched] [filename]

例:

$ grep -A 2 "linux" test_file1.txt

上記のコマンドの出力は次のとおりです

同様に、-Bコマンドラインオプションを使用して、一致した行の前に行を表示します。

$ grep -B N [string-to-be-searched] [filename]

例:

$ grep -B 2 "linux" test_file1.txt

出力は次のとおりです:

最後に、一致した行の周囲に行を印刷するには、-Cコマンドラインオプションを使用します。

$ grep -C N [string-to-be-searched] [filename]

例:

$ grep -C 2 "linux" test_file1.txt

キャプチャされた出力は次のとおりです。

Grepで一致した文字列のみを印刷します

また、(デフォルトで表示される完全な行ではなく)標準出力に一致した文字列のみを印刷することもできます。この機能には、-oコマンドラインオプションを使用してアクセスできます。

$ grep -o [string-to-be-searched] [filename]

たとえば、ファイル内の文字列「linux」を検索する必要がある場合(ただし、完全な行は印刷しないでください)、次のコマンドを使用します。

$ grep -o "linux" [file-name]

*や。*などのワイルドカード文字を使用して、複数の文字列をgrepすることもできます。たとえば、「how」で始まり「linux」で終わる単語のグループをgrepする場合は、次のコマンドを使用できます。

$ grep -o “how.*linux” [file-name]

Grepでの位置の表示

grepコマンドを使用すると、一致した文字列が出現する行のバイトオフセットを表示することもできます。この機能には、-bコマンドラインオプションを使用してアクセスできます。ただし、このオプションをより適切に使用するために、-oコマンドラインオプションを使用すると、一致した文字列の正確な位置が表示されます。

$ grep -o -b [string-to-be-searched] [filename]

例:

$ grep -o -b "for" test_file1.txt

出力は次のとおりです:

結論

これらすべてのオプションを毎日必要とするわけではありませんが、いつ便利になるかわからないため、少なくともそれらについて知っておく必要があります。 Grepは正規表現で使用するとさらに強力になりますが、そのトピックは別の日に残しておきます。


Linux
  1. パターンに一致する特定のファイルを検索する方法は?

  2. Linux で GREP を使用して特定のテキストを検索する方法

  3. Linux で grep を使用して DOS 行末 (CRLF) を含むファイルを検索するにはどうすればよいですか?

  1. diff3ツールを使用してLinuxで3つのファイルを比較する方法

  2. Sedを使用してパターン範囲間の行を検索および置換

  3. コマンドラインを使用してディレクトリ内のファイルの数を取得するにはどうすればよいですか?

  1. PDFファイルをgrepする方法は?

  2. grep を使用して逆方向に検索する

  3. ファイル内の複数行パターンを検索するにはどうすればよいですか?