grepコマンド

grepコマンド

用途

文字列を検索する

書式

grep [オプション] 検索パターン ファイル名s

主なオプション

  • -E検索パターンに拡張正規表現を使用(egrepと同等)
  • -F検索パターンに固定文字列を使用(fgrepと同等)
  • -G検索パターンに正規表現を使用(デフォルト)
  • -P検索パターンにPerlの正規表現を使用
  • -e検索パターンが”-“で始まる際に付加
  • -f検索パターンを引数に指定したファイルから1行毎に読み込む
  • -i大文字と小文字の区別を行わない
  • -w単語に完全にマッチする行のみ選択
  • -x行全体と正確にマッチする行のみ選択
  • ※grepで利用できる正規表現については、正規表現リファレンスを参照

主に表示に関わるオプション

  • -sエラーメッセージを表示しない
  • -vマッチしない行を表示する
  • -m引数に指定した数だけ、マッチする行を表示(max count)
  • -b各出力行の先頭にファイル先頭からのバイト単位のオフセット数を表示
  • -n各出力行の先頭に行番号を表示
  • -H各出力行の先頭に、マッチしたファイル名を表示
  • -h複数ファイル検索時の出力に、ファイル名を表示しない
  • -o検索パターンにマッチした”部分”のみ表示
  • -q検索結果を表示しない(最初のマッチで終了)
  • -aバイナリファイルをテキストファイルとして処理する
  • -Iバイナリファイルはマッチするデータを含まないものとして処理する
  • -rディレクトリ内を再帰的に読み込む
  • -lマッチしたファイルのファイル名を表示
  • -Lマッチしなかったファイルのファイル名を表示
  • -cマッチした行数のみを表示(-v併用で反転表示)

出力を補助するオプション

  • -A NUMパターンマッチした行の、後ろ”NUM行”も表示
  • -B NUMパターンマッチした行の、前 ”NUM行”も表示
  • -C NUMパターンマッチした行の、前後”NUM行”も表示

テキストファイルの中身を検索する

grepコマンドは、ファイルの中身を見て、
指定した条件に一致する内容を行単位で出力してくれます。
以下では、テストファイルを使って色々な検索をしてみます。

テキストファイルの中身

[devi@syslog ~]$ cat -n grep.txt
1 abc def ghi jkl
2
3 mno pqr stu vwx
4 abc def oqi jkl
5 zyx w vut srq
6
7 grep no test file.
[devi@syslog ~]$ cat -n grep2.txt
1 tukihi ha hakutai no kakaku nishite,
2 yukikau toshi mo mata tabibito nari.
3
4 genroku 2 nen 3 gatu 27 nichi

基本的なgrep検索

・”abc”にマッチする行を、grep.txt内より検索
[devi@syslog ~]$ grep abc grep.txt
abc def ghi jkl
abc def oqi jkl
[devi@syslog ~]$
・複数のファイルから検索
[devi@syslog ~]$ grep no grep.txt grep2.txt
grep.txt:mno pqr stu vwx
grep.txt:grep no test file.
grep2.txt:tukihi ha hakutai no kakaku nishite,
[devi@syslog ~]$
※複数のファイルを指定した場合は、出力が多少異なります
・検索結果に行番号を付けて表示
[devi@syslog ~]$ grep -n abc grep.txt
1:abc def ghi jkl
4:abc def oqi jkl
[devi@syslog ~]$
・上記と同じ条件で、マッチしなかった行を表示
[devi@syslog ~]$ grep -nv abc grep.txt
2:
3:mno pqr stu vwx
5:zyx w vut srq
6:
7:grep no test file.
[devi@syslog ~]$
・出力表示する最大行数を指定して検索
[devi@syslog ~]$ grep -nv -m 3 abc grep.txt
2:
3:mno pqr stu vwx
5:zyx w vut srq
[devi@syslog ~]$
・検索条件にマッチした内容を持つファイル名を表示
[devi@syslog ~]$ grep -l abc grep.txt grep2.txt
grep.txt
[devi@syslog ~]$
・検索条件にマッチしなかったファイル名を表示
[devi@syslog ~]$ grep -L abc grep.txt grep2.txt
grep2.txt
[devi@syslog ~]$
・めんどくさい時はディレクトリごと検索
[devi@syslog ~]$ grep -L -r abc dir
dir/grep2.txt
[devi@syslog ~]$

正規表現を使ったgrep検索

固定文字列以外にも、正規表現を使用した、
ファイル内の検索を行うことができます。

標準のgrepコマンドでも、正規表現を使用することができますが、
“-E”オプションを付加して使用すると、egrepと同等の検索が行え、
拡張正規表現を利用することができます。

正規表現を用いる際には、ダブルクォーテーション(”)で囲んで使用します。

・先頭が”abc”で始まる行を検索
[devi@syslog ~]$ grep -n “^abc” grep.txt
1:abc def ghi jkl
4:abc def oqi jkl
[devi@syslog ~]$
・単語の先頭に、”tabi”が含まれる行をegrepで検索
[devi@syslog ~]$ grep -n -E “\<tabi” grep2.txt
2:yukikau toshi mo mata tabibito nari.
[devi@syslog ~]$

タグ

2009年9月17日 | コメントは受け付けていません。 | トラックバックURL |

カテゴリー:ファイル操作系コマンド

トラックバック&コメント

コメントは受け付けていません。