SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

業務でラクするためのUNIXテクニック集

find/grep/xargsコマンドを使いこなす
業務で楽するためのUNIXテクニック集「検索」編

第1回


  • このエントリーをはてなブックマークに追加

 この連載では、UNIX系OSをコマンドライン上から効率よく利用するために知っておくべきテクニックや、便利な小技を紹介していきます。今回はfind/grep/xargsコマンドを利用した「ファイル・ファイル内容の検索」に関するテクニックを紹介します。

  • このエントリーをはてなブックマークに追加

はじめに

 この連載では、UNIX系OSをコマンドライン上から効率よく利用するために知っておくべきテクニックや、便利な小技を紹介していきます。

 今回は「ファイル・ファイル内容の検索」に関するテクニックを紹介します。

前回の記事

対象読者

  • UNIX系OSコマンドを一通り利用したことがある方
  • 正規表現を利用したことがある方
  • 何らかのプログラミング経験がある方

動作確認環境

  • Linux(Debian etch/Fedora 9)
  • FreeBSD 6.1
  • Cygwin 1.5.X

 なるべくUNIX系OS一般に当てはまるよう解説するので、特に記述がない場合は、Mac OS X、Red Hat Linux上でも動作します。シェルに関しては、bash(Bourne-Again Shell 2および3)を想定しています。

テキストファイルを検索する(grepコマンド)

 grepは、ファイル内から指定した文字列に一致する内容を含む行を検索するコマンドです。文字列には正規表現を指定することも可能です。

$ grep[オプション][検索文字列][ファイル名]

 デフォルトでは指定した文字列と一致する部分が見つかった行を表示します。代表的なオプションには、次のようなものがあります。

オプション 機能
-i 大文字と小文字を区別しない
-l パターンに一致した行を含むファイル名だけを出力する
-n パターンに一致した行のファイル内での行番号を表示する
-v パターンに一致しない行を表示する

 grep 2.5以降の場合、次のオプションも利用可能です。

オプション 機能
--color 一致文字列に色を付ける事ができる
-o(--only-matching) 一致した文字列だけを出力する
-r 特定ディレクトリ以下を再帰的に検索する

 grepコマンドを利用した例を2つ紹介します。

複数の検索文字を指定して検索(OR検索)する

 文字列「aomori」を含む行と文字列「yamanashi」を含む行を、「fruits.txt」ファイルから抜き出します。

$ cat fruits.txt
1001,unshu-mikan,wakayama
1002,apple,aomori
1003,japanese pear,chiba
1004,grape,yamanashi
1005,peach,yamanashi

$ grep -e "aomori" -e "yamanashi" fruits.txt
1002,apple,aomori
1004,grape,yamanashi
1005,peach,yamanashi

 「-e」オプションは、複数個のパターンを指定するときに使います。なお、次のような指定をすることも可能です。

$ grep "aomori\|yamanashi" fruits.txt

 「|(パイプ)」の前に「\(バックスラッシュ)」を入れないとOR検索にならないので注意してください。

複数の検索文字を指定して検索する(AND検索)

 grepコマンドで、AND条件を指定する場合は、シェルスクリプトのパイプ機能を使って、2つのgrepコマンドを結びつけます。

$ grep "yamanashi" fruits.txt | grep "peach"
1005,peach,yamanashi

 上記の例を実行すると、ファイル内の文字列「yamanashi」と文字列「peach」が両方含まれる行を取得できます。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
複雑な条件でファイル・ディレクトリを検索する(findコマンド)

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
業務でラクするためのUNIXテクニック集連載記事一覧

もっと読む

この記事の著者

保田和隆(ヤスダカズタカ)

Yasuda Kazutakaネットワーク関連の組み込みソフトウェア開発者。http://uguisu.skr.jp/Windows/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3279 2008/12/22 16:25

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング