Skip to main content

Linux grepコマンドの使用例

1-5 コマンドの使い方の閲覧(はじめてのUNIXコマンド) (六月 2026)

1-5 コマンドの使い方の閲覧(はじめてのUNIXコマンド) (六月 2026)
Anonim

Linux grepコマンドは、入力をフィルタリングする方法として使用されます。 GREPはGlobal Regular Expression Printerの略で、効果的に使用するためには正規表現に関する知識が必要です。

この記事では、grepコマンドの理解に役立ついくつかの例を学びます。

01の09

GREPを使用してファイル内の文字列を検索する方法

次の子どもの本のタイトルを持つ書籍というテキストファイルがあるとします。

  • ロビンフッド
  • 赤頭巾ちゃん
  • ピーターパン
  • ゴルディロックスと3匹のくま
  • 白雪姫と七人のこびと
  • ピニョーチオ
  • 帽子の猫
  • 三匹の子豚
  • グラファロ
  • チャーリーとチョコレート工場

タイトルに「The」という単語を含むすべての書籍を検索するには、次の構文を使用します。

grep本

次の結果が返されます。

  • ゴルディロックスと3匹のくま
  • 白雪姫と七人のこびと
  • 帽子の猫
  • 三匹の子豚
  • グラファロ
  • チャーリーとチョコレート工場

いずれの場合も、「The」という単語が強調表示されます。

検索では大文字と小文字が区別されるため、タイトルの1つに「The」ではなく「the」が含まれていれば、それは返されません。

このケースを無視するには、次のスイッチを追加します。

grep the books --ignore-case

次のように-iスイッチを使用することもできます。

grep -i本

続きを読む

02の09

ワイルドカードを使用してファイル内の文字列を検索する

grepコマンドは非常に強力です。多数のパターンマッチング手法を使用して結果をフィルタリングすることができます。

この例では、ワイルドカードを使用してファイル内の文字列を検索する方法を示します。

次のスコットランドの地名を持つ場所というファイルがあるとします。

アビデン収差収差インプランターインヴァネスニューバーグ新しい鹿新しいギャロウェイグラスゴーエジンバラ

名前に反転がある場所をすべて検索するには、次の構文を使用します。

grep inver * places

アスタリスク(*)ワイルドカードは0またはそれ以上を表します。したがって、インバーネスと呼ばれる場所またはインヴァネスと呼ばれる場所がある場合は、両方が返されます。

あなたが使用できる別のワイルドカードはピリオド(。)です。これを使用して1文字に一致させることができます。

grep inver.r places

上記のコマンドは、単調に表示されているような2つのrの間に1つのワイルドカードしか存在しないため、インジェクトされていないと思われます。

ピリオドのワイルドカードは便利ですが、検索しているテキストの一部として1つがあると問題が発生する可能性があります。

例えば、このドメイン名のリストを見る

  • linux.about.com
  • pcsupport.about.com
  • mp3.about.com
  • minecraft.about.com
  • androidgames.about.com
  • netforbeginners.about.com
  • everydaylinuxuser.com
  • google.co.uk
  • google.au
  • direct.gov.uk

about.comを検索するには、次の構文を使用して検索するだけです。

grep * about *ドメイン名

リストに次の名前が含まれている場合、上記のコマンドは失敗します。

  • everydaylinuxuser.com/about.html

したがって、次の構文を試すことができます:

grep * about.comドメイン名

次の名前のドメインがない限り、これは正常に機能します:

aboutycom.com

about.comという用語を実際に検索するには、次のようにドットをエスケープする必要があります。

grep * about .comドメイン名

あなたを示す最後のワイルドカードは、ゼロまたは1文字を表す疑問符です。

例えば:

grep?ber placenames

上記のコマンドは、aberdeen、aberystwyth、またはberwickを返します。

続きを読む

03の09

grepを使って行頭と行末で文字列を検索する

カラット(^)とドル記号($)を使用すると、行頭と行末でパターンを検索できます。

次のチーム名を持つfootballというファイルがあるとします。

  • ブラックプール
  • リバプール
  • マンチェスター市
  • レスター市
  • マンチェスターU
  • ニューカッスルユナイテッド
  • FC United Of Manchester

マンチェスターで始まったすべてのチームを探したい場合は、次の構文を使用します。

grep ^ Manchesterチーム

上記のコマンドはマンチェスター・シティとマンチェスター・ユナイテッドを返すがFC United of Manchesterは返すことはない。

また、次の構文を使用してUnitedで終わるすべてのチームを見つけることもできます。

grep United $ teams

上のコマンドはマンチェスター・ユナイテッドとニューカッスル・ユナイテッドに戻るがFC United of Manchesterは戻さない。

04/09

grepを使って一致数を数える

grepを使用してパターンに一致する実際の行を返すことは望まないが、その数を知りたい場合は、次の構文を使用できます。

grep -cパターン入力ファイル

パターンが2回一致した場合は、2が返されます。

続きを読む

05の09

grepを使用して一致しない条件をすべて検索する

あなたは、以下のようにリストされた国々の地名のリストを持っているとします。

  • スコットランドのaberdeen
  • グラスゴースコットランド
  • リバプールイングランド
  • コルウィン湾
  • ロンドン、イギリス

あなたはcolwyn湾にそれに関連する国がないことに気づいたかもしれません。

国のあるすべての場所を検索するには、次の構文を使用できます。

grep land $ places

結果はcolwyn bayを除くすべての場所で返されます。

これは明らかに土地で終わる場所(ほとんど科学的ではない)でしか機能しません。

次の構文を使用して選択範囲を反転することができます。

grep -v land $ places

これは土地で終わらなかったすべての場所を見つけるでしょう。

06の06

grepを使ってファイルに空行を見つける方法

次のように、空の行が見つかったときにファイルの読み込みを停止するサードパーティアプリケーションによって使用される入力ファイルがあるとします。

  • アバディーンスコットランド
  • インバージョンスコットランド
  • リバプールイングランド
  • コルウィンベイウェールズ

アプリケーションがリバプール後の行に到達すると、colwyn bayが完全に見逃されているという意味を読み上げなくなります。

grepを使用して、空白行を検索するには、次の構文を使用します。

grep ^ $ places

残念ながら、これは空白行を返すだけなので特に有用ではありません。

もちろん、ファイルが有効かどうかを確認するための空白行数を次のようにカウントすることもできます。

grep -c ^ $ places

しかし、空行を置き換えることができるように空行がある行番号を知ることは、より有益です。あなたは次のコマンドでそれを行うことができます:

grep -n ^ $ places

続きを読む

07の09

grepを使用して大文字または小文字の文字列を検索する方法

grepを使用すると、次の構文を使用して、ファイル内のどの行が大文字であるかを判断できます。

grep 'A-Z'ファイル名

大括弧は、文字の範囲を決定します。上の例では、AとZの間の任意の文字にマッチします。

したがって、小文字を一致させるには、次の構文を使用できます。

grep 'a-z'ファイル名

数字とか他の記号ではなく文字だけをマッチさせたい場合は、以下の構文を使うことができます:

grep 'a-zA-Z'ファイル名

次のように数字を使って同じことができます:

grep '0-9'ファイル名 08の09

grepを使ってパターンを繰り返す

中括弧{}を使用して繰り返しパターンを検索することができます。

次のような電話番号のファイルがあるとします。

  • 055-1234
  • 055-4567
  • 555-1545
  • 444-0167
  • 444-0854
  • 4549-2234
  • x44-1234

あなたは数字の最初の部分が3桁である必要があり、このパターンと一致しない行を探したいと思います。

前の例から、0-9はファイル内のすべての数値を返すことがわかります。

この例では、3つの数字で始まり、ハイフン( - )で始まる行が必要です。次の構文でそれを行うことができます:

grep "^ 0-9 0-9 0-9 - "数字

前の例からわかるように、カラット(^)は行が次のパターンで始まらなければならないことを意味します。

0-9は0と9の間の任意の数字を検索します。これは3回含まれているので、3つの数字と一致します。最後にハイフンが3つの数字の後に続く必要があることを示すハイフンがあります。

中括弧を使用すると、次のように検索を小さくすることができます。

grep "^ 0-9 {3 } - "の数字

スラッシュは{ブラケットをエスケープして正規表現の一部として機能しますが、本質的に0-9 {3}は0と9の間の任意の数を3回意味します。

中かっこも次のように使用できます。

{5,10}{5,}

{5,10}は、検索対象の文字を少なくとも5回は10回以上繰り返さなければならないことを意味し、{5、}は文字を少なくとも5回繰り返さなければならないことを意味するが、それ以上でもよい。

続きを読む

09 09

他のコマンドからの出力の使用grep

ここまでは、個々のファイル内のパターンマッチングを見てきましたが、grepは他のコマンドの出力をパターンマッチングの入力として使用できます。

これの大きな例は、アクティブなプロセスをリストするpsコマンドを使用することです。

たとえば、次のコマンドを実行します。

ps -ef

システム上のすべての実行中のプロセスが表示されます。

grepを使用すると、次のように特定の実行中のプロセスを検索できます。

ps -ef | grep firefox

概要

grepコマンドは基本的なLinuxコマンドであり、ターミナルを使用するときにファイルやプロセスを検索する際に、あなたの人生をはるかに簡単にするので、学習する価値があります。