LinuxGrepコマンドの10の実用例

grepコマンドは、テキストファイル内のパターンを検索するために使用される強力なファイル処理ツールであるgrepユーティリティへのアクセスを提供します。多くの実用的なユースケースがあり、確かに最も使用されているLinuxコマンドの1つです。このガイドでは、実際に使用できる、シンプルでありながら便利なLinuxgrepコマンドについて説明します。

デモンストレーション用のサンプルファイル

読者がgrepをより効果的に理解できるように、参照ファイルを作成しました。ターミナルで次のシェルコマンドを発行することにより、このファイルのコピーを作成できます。

 cat <<END >> test-file
This is a simple text file that contains
multiple strings as well as some telephone numbers
(555) 555-1234 (567) 666-2345
and email plus web addresses
john@doe.com
https://google.com
ftp://mywebserver.com
END

1.ファイル内のテキストを検索する

ファイル内のテキストパターンを検索するには、grepに続けてパターン名を実行するだけです。また、テキストを含むファイルの名前を指定します。

 grep "email" test-file

このコマンドは、 emailという単語を含むテストファイルの行を表示します。 grepを使用して、複数のファイルで同じテキストを検索することもできます。

 grep "example" /usr/share/dict/american-english /usr/share/dict/british-english

上記のコマンドは、アメリカ英語イギリス英語の辞書ファイルにある単語exampleのすべてのインスタンスを表示します。

2.完全に一致する単語を見つける

前の例で示したLinuxgrepコマンドは、部分的に一致する行もリストします。単語の正確な出現のみが必要な場合は、以下のコマンドを使用してください。

 grep -w "string" test-file

grepの-wまたは–word-regexpオプションは、出力を完全一致のみに制限します。 Grepは、デフォルトのコマンドでも使用できるいくつかの追加フラグで構成されています。

関連: Grepはどのようにしてその名前を付けましたか? Grepの作成の背後にある歴史

3.ケースの区別を無視する

デフォルトでは、grepは大文字と小文字を区別する方法でパターンを検索します。ただし、パターンがどのような場合であるかが事前にわからない場合は、これをオフにすることをお勧めします。

 grep -i "this" test-file

大文字と小文字の区別をオフにするには、 -iまたは–ignore-caseオプションを使用します

4.パターンの数を数える

-cフラグはcountを表します。特定のパターンで見つかった一致の数が表示されます。管理者はこれを使用して、システムに関する特定の情報を取得できます。

psコマンドをgrepと一緒にパイプ処理して、現在のユーザーに属するプロセスをカウントできます。

 ps -ef | grep -c $USER

次のコマンドは、ディレクトリに存在するMP3ファイルの数を表示します。

 ls ~/Music | grep -c .mp3

5.一致を含む行番号を表示します

特定の一致を含む行番号を検索することをお勧めします。これを実現するには、grepの-nまたは–line-numberオプションを使用します。

 cat /etc/passwd | grep -n rubaiat

このオプションは、ソースコードのデバッグやログファイルのトラブルシューティングに特に役立ちます。 Vimテキストエディタの設定に使用される〜/ .vimrcの行のすべての番号を表示するには:

 grep -n "set" ~/.vimrc

6.拡張子を使用してファイル名を検索する

〜/ MusicディレクトリにあるすべてのMP3ファイルのリストを取得するには:

 ls ~/Music/ | grep ".mp3"

特定のファイルを見つけるために、 .mp3を他の拡張子に置き換えることができます。次のコマンドは、現在の作業ディレクトリに存在するすべてのphpファイルを一覧表示します。

 ls | grep ".php"

7.圧縮ファイルでパターンを見つける

Linux grepコマンドは、圧縮ファイル内のパターンも見つけることができます。ただし、これを行うにはzgrepコマンドを使用する必要があります。まず、次のように入力して、テストファイルの圧縮アーカイブを作成します。

 gzip test-file

これで、結果のアーカイブ内のテキストまたはその他のパタ​​ーンを検索できます。

 zgrep email test-file.gz

8.メールアドレスを探す

管理者は、Linux grepコマンドを使用して、テキストファイルから電子メールアドレスを一覧表示することもできます。次の例では、正規表現パターンを検索してこれを行います。

 grep '^[a-zA-Z0-9]+@[a-zA-Z0-9]+.[az]{2,}' test-file

同様の仕事をするための正規表現を見つけることができます。または、それらがどのように機能するかを知っている場合は、自分で作成することができます。

9.Grepを使用して電話番号を検索する

grep正規表現を使用して、テキストファイルから電話番号を除外できます。必要な電話番号のタイプに一致するようにパターンを微調整する必要があることに注意してください。

 grep '(([0-9]{3})|[0-9]{3})[ -]?[0-9]{3}[ -]?[0-9]{4}' test-file

前述のコマンドは、10桁のアメリカの電話番号を除外します。

10.ソースファイルからURLを検索する

grepの機能を利用して、テキストファイルで見つかったURLを一覧表示できます。以下のコマンドは、テストファイルに存在するすべてのURLを出力します

 grep -E "^(http|https|ftp):[/]{2}([a-zA-Z0-9-.]+.[a-zA-Z]{2,4})" test-file

拡張正規表現には再び-Eオプションを使用しています。 egrepコマンドを使用して、これを追加しないようにすることもできます。

 egrep "^(http|https|ftp):[/]{2}([a-zA-Z0-9-.]+.[a-zA-Z]{2,4})" test-file

LinuxGrepコマンドをマスターする

実際の問題に取り組むためのLinuxgrepコマンドのいくつかの便利な例を紹介しました。これらの例は、テキスト処理におけるgrepの能力を示していますが、grepで非常に生産的になりたい場合は、正規表現を習得する必要があります。

Linuxユーザーは、コマンドに関連するさまざまなオプションを思い出せない特定の状況に遭遇することがあります。うまくいけば、Linuxオペレーティングシステムは、ほぼすべてのシステムユーティリティのコマンドラインヘルプを取得する方法を提供します。