ファイル内パターン一致

記事の内容

概要

grepコマンドは、テキストファイル内でパターンに一致する行を検索するためのコマンドラインツールです。
※Global Regular Expression Printの略

grep
ディレクトリ階層とテキストの中身

dir
└─ sample.txt
===============
【sample.txtに中身】
テキスト1行目
これはテキスト2行目
これはテキスト3行目

【dirディレクトリにいる場合】

[tomoji@10moji-blog.com dir]$ grep "これは" sample.txt
これはテキスト2行目
これはテキスト3行目

複数ファイル検索

grep
ディレクトリ階層とテキストの中身

dir
├─ sample1.txt
└─ sample2.txt
===============
【sample1.txtに中身】
aaa
bbb
ccc
【sample2.txtに中身】
aaa
ddd
eee

【dirディレクトリにいる場合】

[tomoji@10moji-blog.com dir]$ grep aaa *.txt
sample1.txt:aaa
sample2.txt:aaa

正規表現

grep(正規表現)
ディレクトリ階層とテキストの中身

dir
└─ sample.txt
===============
【sample.txtに中身】
123aaa
aaa
bbb
ccc

【dirディレクトリにいる場合】
※先頭からaaaの文字列検索

[tomoji@10moji-blog.com dir]$ grep "aaa" sample.txt
123aaa
aaa

[tomoji@10moji-blog.com dir]$ grep "^aaa" sample.txt
aaa

オプション一覧

オプション説明
-i大文字と小文字を区別せずに検索
-r再帰的にディレクトリ内を検索
-vパターンに一致しない行を表示
-n一致した行の行番号を表示

-i

iオプションは、大文字と小文字を区別せずに検索を行うためのオプションです。

grep -i
ディレクトリ階層とテキストの中身

dir
└─ sample.txt
===============
【sample.txtに中身】
linux
Linux
LINUX

【dirディレクトリにいる場合】

[tomoji@10moji-blog.com dir]$ grep linux sample.txt
linux

[tomoji@10moji-blog.com dir]$ grep -i linux sample.txt
linux
Linux
LINUX

-r

rオプションは、再帰的にディレクトリ内を検索するためのオプションです。
※指定されたディレクトリ内のすべてのサブディレクトリに対して検索

grep -r
ディレクトリ階層とテキストの中身

dir1
├─ sample1.txt
└─ dir2
  ├─ sample2.txt
  └─ dir3
    └─ sample3.txt
===============
【sample1.txtに中身】
aaa
【sample2.txtに中身】
123aaa
bbb
【sample3.txtに中身】
aaa456
ccc

【dir1ディレクトリにいる場合】

[tomoji@10moji-blog.com dir1]$ grep aaa *.txt
aaa

[tomoji@10moji-blog.com dir1]$ grep -r aaa
sample1.txt:aaa
dir2/sample2.txt:123aaa
dir2/dir3/sample3.txt:aaa456

-v

vオプションは、指定されたパターンに一致しない行を表示するためのオプションです。

grep -v
ディレクトリ階層とテキストの中身

dir
└─ sample.txt
===============
【sample.txtに中身】
aaa
bbb
ccc

【dirディレクトリにいる場合】

[tomoji@10moji-blog.com dir]$ grep -v aaa
bbb
ccc

-n

nオプションは、一致した行の行番号を表示するためのオプションです。

grep -n
ディレクトリ階層とテキストの中身

dir
├─ sample1.txt
└─ sample2.txt
===============
【sample1.txtに中身】
aaa
bbb
【sample2.txtに中身】
bbb123
ccc456

【dirディレクトリにいる場合】

[tomoji@10moji-blog.com dir]$ grep -n aaa *.txt
sample1.txt:2:bbb
sample2.txt:1:bbb123
記事の内容
閉じる