Linux
 Computer >> コンピューター >  >> スマートフォン >> Linux

【初心者向け】Linuxのgrepコマンド入門|基本の検索から複数キーワード検索まで

本記事では、Linuxをはじめとする*nix系OS(最新バージョンのmacOSを含む)に標準で搭載されている、非常に便利な「grep」コマンドの基本的な使い方を解説します。

grepコマンドとは?

LinuxやUNIXのコマンドラインに慣れている方なら、grepを目にしたことがある方も多いでしょう。grepは、ファイルの中から特定の単語や文字列を検索するためのコマンドラインツールで、ほぼすべてのLinuxディストリビューションにデフォルトでインストールされています。

基本の使い方:ファイル内から文字列を検索する

まずは最もシンプルな例として、Apacheの設定ファイルから「www」という文字列を検索してみましょう。

# grep www /etc/httpd/conf/httpd.conf

#ServerName www.example.com:80
DocumentRoot "/var/www/html"
# e.g., www.apache.org (on) or 204.62.129.132 (off).
Alias /icons/ "/var/www/icons/"

この例では、/etc/httpd/conf/httpd.conf ファイル内から「www」を検索し、該当する4行が出力されました。grepの基本構文は非常にシンプルです。

grepには他にも多数のオプションが用意されています。詳しく知りたい場合は、次のコマンドでマニュアルを参照してください。

# man grep

複数のキーワードを1回のコマンドで検索する

grepでは、1つのコマンドで複数のキーワードを同時に検索することもできます。先ほどのコマンドを修正して、「www」と「server」の両方を検索してみましょう。

# grep 'www\|server' /etc/httpd/conf/httpd.conf

# SetHandler server-status
# Allow remote server configuration reports, with the URL of
# https://servername/server-info (requires that mod_info.c be loaded).
#ServerName www.example.com:80
DocumentRoot "/var/www/html"
# e.g., www.apache.org (on) or 204.62.129.132 (off).
Alias /icons/ "/var/www/icons/"
# SetHandler server-info
# enable the proxy server:
# ("Full" adds the server version; "Block" removes all outgoing Via: headers)
# use only name-based virtual hosts so the server doesn't need to worry about
# server name.

ご覧のとおり、2つ目のコマンドでは12行という多くの結果が返ってきました。ポイントは、検索パターンを 'www\|server' のように変更した点です。パイプ記号(|)の前に必ずバックスラッシュ(\)を付けてください。これを忘れると意図した結果が得られません。

egrepを使えばエスケープ不要で簡単

バックスラッシュによるエスケープが面倒な場合は、拡張正規表現に対応した egrep コマンドを使うのがおすすめです。エスケープなしで同じ検索が実現できます。

# egrep 'www|server' /etc/httpd/conf/httpd.conf

さらに、パイプを追加すればキーワードはいくらでも増やせます。たとえば「apache」も加えて検索する場合は、次のように記述します。

# egrep 'www|server|apache' /etc/httpd/conf/httpd.conf

なお、近年の環境ではegrepは非推奨とされており、代わりに grep -E オプションを使用することが推奨されています。どちらも同じ拡張正規表現で動作するため、覚えておくと便利です。

findコマンドとの組み合わせで検索力アップ

grepは、findコマンドと組み合わせることで真価を発揮します。findで対象ファイルを絞り込み、その結果をパイプでgrepに渡せば、ディレクトリ全体を横断した高度な検索が可能になります。

# find /etc -name "*.conf" | xargs grep 'server'

このように、grepとfindを組み合わせれば、コンピュータ上のほぼあらゆる情報を見つけ出すことができます。まずは基本の使い方に慣れ、日々の作業効率化にぜひ役立ててください。

  1. Microsoftアカウントを最大限に活用する方法|主な機能と登録手順を徹底解説

    コンピューターの世界は常に変化し続けており、絶え間ない進化のプロセスそのものです。そして、コンピューターテクノロジーの分野において、先駆者として技術を発明し、改良し、業界をリードしてきた企業といえば、やはりMicrosoft(マイクロソフト)でしょう。 OSの提供からMS Officeといったソフトウェアツールの開発まで、Microsoftはデジタルテクノロジーにおける「始祖」とも言える存在です。 数あるサービスの中でも、Microsoftアカウントは、ほぼすべてのMicrosoftサービスへのアクセスを可能にする包括的なサービスです。メールクライアントのOutlook、Windows 10搭

  2. Xen 仮想化の開始

    Zで綴られるZenは、8時間保持した後、雪の中でおしっこをしているときに頭頂部にある典型的な感覚です. Xen は X で綴られており、KVM と同様に、企業市場を対象としていますが、家庭でもビジネスでもセットアップを検討できるオープンソースの仮想化テクノロジです。 KVM に関するいくつかのチュートリアルがあり、導入記事、ストレージとネットワーク (ブリッジ ネットワークを含む) のセットアップと構成の方法、および VirtualBox との競合の解決方法をカバーしています。ここで、Xen についてもう少し学びましょう。同様に、仮想マシンをインストールして実行するために必要な最初の手順、