grep - 文字列検索やパターンマッチしたファイル検索をする

スポンサーリンク

grepコマンドは、文字列検索や特定の文字列を持つファイルの検索を行うことができます。

例えば、ファイルの中にあるパターンにマッチした行を検索や逆にパターンにマッチしなかった行を表示することが可能です。

目次

スポンサーリンク

grepとは

文字列検索やパターンにマッチしたファイルの検索を行うことができるコマンドです。
ファイルの文字列検索はマッチした行だけではなく、マッチしなかった行の表示も行うことができます。
パターンにマッチしたファイル名や行番号も表示することができます。
また、パターンにマッチした行の前後の行やパターンにマッチした行の行数の表示も行うことができます。

 

 

 

grepコマンドの構文

grepコマンドの構文

オプション:0個以上のオプションをつけることができます。

パターン:'-e パターン' または '-f ファイル名'でパターンを指定する場合、必要ありません。

入力ファイル:0個以上の入力ファイルを指定できます。

 

 

 

パターンにマッチした行を抽出

itemtext.txtに書かれているappleのある行がすべて抽出されます。

コマンド例

itemtext.txt

apple apple apple
apple apple onion
apple apple yuzu
apple onion apple
apple onion onion
apple onion yuzu
apple yuzu apple
apple yuzu onion
apple yuzu yuzu
onion apple apple
onion apple onion
onion apple yuzu
onion onion apple
onion onion onion
onion onion yuzu
onion yuzu apple
onion yuzu onion
onion yuzu yuzu
yuzu apple apple
yuzu apple onion
yuzu apple yuzu
yuzu onion apple
yuzu onion onion
yuzu onion yuzu
yuzu yuzu apple
yuzu yuzu onion
yuzu yuzu yuzu

実行結果

apple apple apple
apple apple onion
apple apple yuzu
apple onion apple
apple onion onion
apple onion yuzu
apple yuzu apple
apple yuzu onion
apple yuzu yuzu
onion apple apple
onion apple onion
onion apple yuzu
onion onion apple
onion yuzu apple
yuzu apple apple
yuzu apple onion
yuzu apple yuzu
yuzu onion apple
yuzu yuzu apple

端末(terminal)によってはcolorのオプションをつけると抽出したパターンが色付けされて、より分かりやすくなります。
例えば、

とするとappleという単語に色がついて、どこにappleという単語があるかがわかりやすくなります。

 

 

 

大文字と小文字を区別しない
(-iオプション)

-iオプションは、パターンの大文字と小文字を区別しないようになります。
どのような文字かだけがわかっている場合に利用することができます。
apt-cacheコマンドなどでパッケージを検索するときやシステム情報等を検索するときなどに便利です。
コマンド例では、sedコマンドで行の1番目にあるappleを大文字にしています。

コマンド例

itemtext.txt ▼表示

実行結果

APPLE apple apple
APPLE apple onion
APPLE apple yuzu
APPLE onion apple
APPLE onion onion
APPLE onion yuzu
APPLE yuzu apple
APPLE yuzu onion
APPLE yuzu yuzu
onion APPLE apple
onion APPLE onion
onion APPLE yuzu
onion onion APPLE
onion yuzu APPLE
yuzu APPLE apple
yuzu APPLE onion
yuzu APPLE yuzu
yuzu onion APPLE
yuzu yuzu APPLE

複数のパターンを指定
(-eオプション)

-eオプションで指定するパターンを明示することができます。
また、-eオプションは複数つけることができ、複数つけると一致したパターンのいずれかが含まれていたら、その行が抽出されます。

コマンド例

itemtext.txt ▼表示

実行結果

apple apple apple
apple apple onion
apple apple yuzu
apple onion apple
apple onion onion
apple onion yuzu
apple yuzu apple
apple yuzu onion
apple yuzu yuzu
onion apple apple
onion apple onion
onion apple yuzu
onion onion apple
onion onion yuzu
onion yuzu apple
onion yuzu onion
onion yuzu yuzu
yuzu apple apple
yuzu apple onion
yuzu apple yuzu
yuzu onion apple
yuzu onion onion
yuzu onion yuzu
yuzu yuzu apple
yuzu yuzu onion
yuzu yuzu yuzu

複数のパターンをファイルで指定
(-fオプション)

-fオプションは複数のパターンはファイルによっても指定できます。
パターンの書き方は指定するパターンを一行ずつに分けて書きます。

コマンド例

pattern.txt

itemtext.txt ▼表示

実行結果

apple apple apple
apple apple onion
apple apple yuzu
apple onion apple
apple onion onion
apple onion yuzu
apple yuzu apple
apple yuzu onion
apple yuzu yuzu
onion apple apple
onion apple onion
onion apple yuzu
onion onion apple
onion onion yuzu
onion yuzu apple
onion yuzu onion
onion yuzu yuzu
yuzu apple apple
yuzu apple onion
yuzu apple yuzu
yuzu onion apple
yuzu onion onion
yuzu onion yuzu
yuzu yuzu apple
yuzu yuzu onion
yuzu yuzu yuzu

マッチしない行を抽出
(-vオプション)

-vオプションによって、appleに一致しない行が抽出されます。
余分なものをフィルタするときによく使われ、パイプなどで次のコマンドに渡す出力を制限するときに便利です。

コマンド例

itemtext.txt ▼表示

実行結果

 

 

 

行がパターンにそのまま一致する行を抽出
(-xオプション)

-xオプションは、行がパターンにそのまま一致するときにその行を抽出します。パターンの指定で正規表現で^と$でパターンを囲んだもの("^pattern$"のようなもの)と同じになります。

コマンド例

itemtext.txt ▼表示

実行結果 なし

別の例を出すと、以下のようになります。

コマンド例

x_opt.txt

実行結果

-xオプションはほかのコマンドと組み合わせて利用できます。
例えば、itemtext.txtの3列目にあるappleとyuzuの数を数えるとします。
それは、以下のようなコマンドで数えることができます。

コマンド例

または、一行、すなわちワンライナーで入力すると

実行結果

 

 

 

パターンにマッチした行数を数える
(-cオプション)

-cオプションでパターンにマッチした行数を数えることができます。

コマンド例

itemtext.txt ▼表示

実行結果

-vオプションを組み合わせると逆にパターンにマッチしなかった行数を数えることができます。
コマンド例

実行結果

 

 

 

パターンにマッチする行数を制限
(-mオプション)

-mオプションは、マッチした行数が指定した数値まで読み込むと、それ以降のそのファイルに対するパターンマッチングをストップします。

コマンド例

itemtext.txt ▼表示

実行結果

ファイルを複数選択していた場合の結果は、以下の通りになります。
ここで、itemtext2.txtはitemtext.txtのコピーになります。

コマンド例

実行結果

 

 

 

パターンにマッチした部分のみを抜き出す
(-oオプション)

-oオプションは、パターンにマッチした部分のみを抜き出します。出力にはマッチした部分が行に分かれて表示されます。

コマンド例

itemtext.txt ▼表示

実行結果

apple
apple
apple
apple
apple
apple
apple
apple
apple
apple
apple
apple
apple
apple
apple
apple
apple
apple
apple
apple
apple
apple
apple
apple
apple
apple
apple

uniqコマンドと組み合わせれば、出てきたパターンの数を数え上げることができます。

コマンド例

実行結果

複数のパターンを指定している場合、uniqコマンドの前にsortコマンドを通すことで、それぞれのパターンについて、出てきた数を数え上げることができます。

コマンド例

実行結果

 

 

 

ファイル名を表示
(-Hオプション)

-Hオプションはパターンを検索したとき、パターンに一致した行と一緒にファイル名も一緒に表示します。
2つ以上のファイルに対して検索するとき、自動的にこのオプションはONになります。

コマンド例

itemtext.txt ▼表示

実行結果

itemtext.txt:apple apple apple
itemtext.txt:apple apple onion
itemtext.txt:apple apple yuzu
itemtext.txt:apple onion apple
itemtext.txt:apple onion onion
itemtext.txt:apple onion yuzu
itemtext.txt:apple yuzu apple
itemtext.txt:apple yuzu onion
itemtext.txt:apple yuzu yuzu
itemtext.txt:onion apple apple
itemtext.txt:onion apple onion
itemtext.txt:onion apple yuzu
itemtext.txt:onion onion apple
itemtext.txt:onion yuzu apple
itemtext.txt:yuzu apple apple
itemtext.txt:yuzu apple onion
itemtext.txt:yuzu apple yuzu
itemtext.txt:yuzu onion apple
itemtext.txt:yuzu yuzu apple

ファイル名を表示しない
(-hオプション)

-hオプションはパターンに一致した行に対して、ファイル名を非表示にします。
ここでitemtext2.txtはitemtext.txtのコピーです。

通常、2つ以上のファイルに対して、grepコマンドを行うとパターンに一致した行と一緒にファイル名も表示されます。
しかし、-hオプションをつけることで、ファイル名を非表示にできます。

コマンド例

itemtext.txt ▼表示

実行結果

 

 

 

標準入力に渡されたものにラベルをつける
(--labelオプション)

--labelオプションは、標準入力から来た文字列に対して、ファイル名があるかのようにラベルをつけることができます。

まずは、標準入力でgrepコマンドに-Hオプションをつけて渡された時の出力を見ます。

コマンド例

itemtext.txt ▼表示

実行結果

 

この(standard input)に対して、別の名前を付けることができます。
それは、--labelというオプションでできます。

コマンド例

実行結果

grepで検索したパターンをファイルにどんどん追記していくときにラベルをつけておくと、どういう意図の出力された文字列かがわかるかもしれません。

 

 

 

パターンにマッチした部分の行番号を表示
(-nオプション)

-nオプションは、パターンに一致した部分の行番号を表示します。
コマンド例

itemtext.txt ▼表示

実行結果

1:apple apple apple
2:apple apple onion
3:apple apple yuzu
4:apple onion apple
5:apple onion onion
6:apple onion yuzu
7:apple yuzu apple
8:apple yuzu onion
9:apple yuzu yuzu
10:onion apple apple
11:onion apple onion
12:onion apple yuzu
13:onion onion apple
16:onion yuzu apple
19:yuzu apple apple
20:yuzu apple onion
21:yuzu apple yuzu
22:yuzu onion apple
25:yuzu yuzu apple

-Hオプションと併用するとファイル名も表示することができます。
これでどのファイルのどの行がパターンに一致したかを把握することができます。

コマンド例

実行結果

itemtext.txt:1:apple apple apple
itemtext.txt:2:apple apple onion
itemtext.txt:3:apple apple yuzu
itemtext.txt:4:apple onion apple
itemtext.txt:5:apple onion onion
itemtext.txt:6:apple onion yuzu
itemtext.txt:7:apple yuzu apple
itemtext.txt:8:apple yuzu onion
itemtext.txt:9:apple yuzu yuzu
itemtext.txt:10:onion apple apple
itemtext.txt:11:onion apple onion
itemtext.txt:12:onion apple yuzu
itemtext.txt:13:onion onion apple
itemtext.txt:16:onion yuzu apple
itemtext.txt:19:yuzu apple apple
itemtext.txt:20:yuzu apple onion
itemtext.txt:21:yuzu apple yuzu
itemtext.txt:22:yuzu onion apple
itemtext.txt:25:yuzu yuzu apple

 

 

 

パターンにマッチしているファイルを検索
(-lオプション)

lオプションは、パターンの後にファイル名を指定することでパターンにマッチした行ではなく、ファイルの名前を表示してくれます。

コマンド例

または

ディレクトリ構造

.(ドット)はカレントディレクトリです。
itemtext2.txtとitemtext-dir1.txtは、itemtext.txtのコピーになります。
また、empty.txtとempty-dir1.txtは何も書かれていないファイルとなります。

実行結果

ディレクトリを指定した場合に違うメッセージを出しますが、-sオプションを用いることでこのようなメッセージやエラーメッセージを表示させないようにすることができます。
コマンド例

または

実行結果

 

 

 

再帰的にパターンにマッチしているファイルを検索
(-rオプションと-lオプション)

-rオプションは、ファイルの代わりにディレクトリを指定して、再帰的にそれぞれのファイルに対して検索を行っていくオプションです。

コマンド例

または

ディレクトリ構造 ▼表示

実行結果

ディレクトリを指定しなければ、現在のディレクトリから再帰的に検索していきます。

コマンド例

実行結果

 

 

 

再帰的にファイルに対してパターンにマッチした行を検索
(-rオプション)

-rオプションは、ファイルの代わりにディレクトリを指定して、再帰的にそれぞれのファイルに対して検索を行っていくオプションです。
ディレクトリを指定しなければ、現在のディレクトリから再帰的に検索していきます。

コマンド例

itemtext.txt ▼表示

ディレクトリ構造 ▼表示

実行結果

./dir1/itemtext-dir1.txt:apple apple apple
./dir1/itemtext-dir1.txt:apple apple onion
./dir1/itemtext-dir1.txt:apple apple yuzu
./dir1/itemtext-dir1.txt:apple onion apple
./dir1/itemtext-dir1.txt:apple onion onion
./dir1/itemtext-dir1.txt:apple onion yuzu
./dir1/itemtext-dir1.txt:apple yuzu apple
./dir1/itemtext-dir1.txt:apple yuzu onion
./dir1/itemtext-dir1.txt:apple yuzu yuzu
./dir1/itemtext-dir1.txt:onion apple apple
./dir1/itemtext-dir1.txt:onion apple onion
./dir1/itemtext-dir1.txt:onion apple yuzu
./dir1/itemtext-dir1.txt:onion onion apple
./dir1/itemtext-dir1.txt:onion yuzu apple
./dir1/itemtext-dir1.txt:yuzu apple apple
./dir1/itemtext-dir1.txt:yuzu apple onion
./dir1/itemtext-dir1.txt:yuzu apple yuzu
./dir1/itemtext-dir1.txt:yuzu onion apple
./dir1/itemtext-dir1.txt:yuzu yuzu apple
./itemtext2.txt:apple apple apple
./itemtext2.txt:apple apple onion
./itemtext2.txt:apple apple yuzu
./itemtext2.txt:apple onion apple
./itemtext2.txt:apple onion onion
./itemtext2.txt:apple onion yuzu
./itemtext2.txt:apple yuzu apple
./itemtext2.txt:apple yuzu onion
./itemtext2.txt:apple yuzu yuzu
./itemtext2.txt:onion apple apple
./itemtext2.txt:onion apple onion
./itemtext2.txt:onion apple yuzu
./itemtext2.txt:onion onion apple
./itemtext2.txt:onion yuzu apple
./itemtext2.txt:yuzu apple apple
./itemtext2.txt:yuzu apple onion
./itemtext2.txt:yuzu apple yuzu
./itemtext2.txt:yuzu onion apple
./itemtext2.txt:yuzu yuzu apple
./itemtext.txt:apple apple apple
./itemtext.txt:apple apple onion
./itemtext.txt:apple apple yuzu
./itemtext.txt:apple onion apple
./itemtext.txt:apple onion onion
./itemtext.txt:apple onion yuzu
./itemtext.txt:apple yuzu apple
./itemtext.txt:apple yuzu onion
./itemtext.txt:apple yuzu yuzu
./itemtext.txt:onion apple apple
./itemtext.txt:onion apple onion
./itemtext.txt:onion apple yuzu
./itemtext.txt:onion onion apple
./itemtext.txt:onion yuzu apple
./itemtext.txt:yuzu apple apple
./itemtext.txt:yuzu apple onion
./itemtext.txt:yuzu apple yuzu
./itemtext.txt:yuzu onion apple
./itemtext.txt:yuzu yuzu apple

ディレクトリを複数指定した場合は、入力した順番のディレクトリでファイルを再帰的に実行していきます。

コマンド例

実行結果

./dir1/itemtext-dir1.txt:apple apple apple
./dir1/itemtext-dir1.txt:apple apple onion
./dir1/itemtext-dir1.txt:apple apple yuzu
./dir1/itemtext-dir1.txt:apple onion apple
./dir1/itemtext-dir1.txt:apple onion onion
./dir1/itemtext-dir1.txt:apple onion yuzu
./dir1/itemtext-dir1.txt:apple yuzu apple
./dir1/itemtext-dir1.txt:apple yuzu onion
./dir1/itemtext-dir1.txt:apple yuzu yuzu
./dir1/itemtext-dir1.txt:onion apple apple
./dir1/itemtext-dir1.txt:onion apple onion
./dir1/itemtext-dir1.txt:onion apple yuzu
./dir1/itemtext-dir1.txt:onion onion apple
./dir1/itemtext-dir1.txt:onion yuzu apple
./dir1/itemtext-dir1.txt:yuzu apple apple
./dir1/itemtext-dir1.txt:yuzu apple onion
./dir1/itemtext-dir1.txt:yuzu apple yuzu
./dir1/itemtext-dir1.txt:yuzu onion apple
./dir1/itemtext-dir1.txt:yuzu yuzu apple
./itemtext2.txt:apple apple apple
./itemtext2.txt:apple apple onion
./itemtext2.txt:apple apple yuzu
./itemtext2.txt:apple onion apple
./itemtext2.txt:apple onion onion
./itemtext2.txt:apple onion yuzu
./itemtext2.txt:apple yuzu apple
./itemtext2.txt:apple yuzu onion
./itemtext2.txt:apple yuzu yuzu
./itemtext2.txt:onion apple apple
./itemtext2.txt:onion apple onion
./itemtext2.txt:onion apple yuzu
./itemtext2.txt:onion onion apple
./itemtext2.txt:onion yuzu apple
./itemtext2.txt:yuzu apple apple
./itemtext2.txt:yuzu apple onion
./itemtext2.txt:yuzu apple yuzu
./itemtext2.txt:yuzu onion apple
./itemtext2.txt:yuzu yuzu apple
./itemtext.txt:apple apple apple
./itemtext.txt:apple apple onion
./itemtext.txt:apple apple yuzu
./itemtext.txt:apple onion apple
./itemtext.txt:apple onion onion
./itemtext.txt:apple onion yuzu
./itemtext.txt:apple yuzu apple
./itemtext.txt:apple yuzu onion
./itemtext.txt:apple yuzu yuzu
./itemtext.txt:onion apple apple
./itemtext.txt:onion apple onion
./itemtext.txt:onion apple yuzu
./itemtext.txt:onion onion apple
./itemtext.txt:onion yuzu apple
./itemtext.txt:yuzu apple apple
./itemtext.txt:yuzu apple onion
./itemtext.txt:yuzu apple yuzu
./itemtext.txt:yuzu onion apple
./itemtext.txt:yuzu yuzu apple
dir1/itemtext-dir1.txt:apple apple apple
dir1/itemtext-dir1.txt:apple apple onion
dir1/itemtext-dir1.txt:apple apple yuzu
dir1/itemtext-dir1.txt:apple onion apple
dir1/itemtext-dir1.txt:apple onion onion
dir1/itemtext-dir1.txt:apple onion yuzu
dir1/itemtext-dir1.txt:apple yuzu apple
dir1/itemtext-dir1.txt:apple yuzu onion
dir1/itemtext-dir1.txt:apple yuzu yuzu
dir1/itemtext-dir1.txt:onion apple apple
dir1/itemtext-dir1.txt:onion apple onion
dir1/itemtext-dir1.txt:onion apple yuzu
dir1/itemtext-dir1.txt:onion onion apple
dir1/itemtext-dir1.txt:onion yuzu apple
dir1/itemtext-dir1.txt:yuzu apple apple
dir1/itemtext-dir1.txt:yuzu apple onion
dir1/itemtext-dir1.txt:yuzu apple yuzu
dir1/itemtext-dir1.txt:yuzu onion apple
dir1/itemtext-dir1.txt:yuzu yuzu apple

この例ではdir1を繰り返して、検索していますが実際に利用する際はこのような指定はしないと思います。

 

 

 

再帰的な検索から検索項目を除外
(--excludeオプション)
(--exclude-fromオプション)
(--exclude-dirオプション)

--excludeオプション

--excludeオプションは、検索から除外するファイルを指定します。指定するファイルについてはワイルドカードを使用できます。*.txtですべてのテキストファイルを検索から除外します。今回の例では出力は表示されません。

コマンド例

ディレクトリ構造 ▼表示

実行結果 なし

もし、itemtext.txtのコピーであるitemtext.datがあるならば、このコマンド例は以下のような実行結果になります。

実行結果 ▼表示

'{}'で複数のリストを指定することもできます。

この指定方法は

と等価なコマンドになります。
これはすべてのテキストファイルとすべてのデータファイルを除外することができます。

 

 

 

--exclude-fromオプション

--excludeオプションで除外するファイルは別のファイルにすることができます。
--exclude-fromオプションは、--excludeオプションで除外するファイルを別のファイルに書き込んで置き、そのファイルを読み込んで検索から除外することができます。

コマンド例

exclude-file.txt

ディレクトリ構造 ▼表示

実行結果 なし

 

 

 

--exclude-dirオプション

--exclude-dirオプションは検索から除外できるディレクトリを指定することができます。
ワイルドカードを用いた指定もできます。

コマンド例

ディレクトリ構造 ▼表示

実行結果 ▼表示

 

 

 

指定のファイルのみを検索
(--includeオプション)

--includeオプションは指定したファイルだけを検索します。
*.txtですべてのテキストファイルだけを検索します。
--excludeオプションと同じようにワイルドカードを用いて指定することができます。

コマンド例

ディレクトリ構造 ▼表示

実行結果

dir1/itemtext-dir1.txt:apple apple apple
dir1/itemtext-dir1.txt:apple apple onion
dir1/itemtext-dir1.txt:apple apple yuzu
dir1/itemtext-dir1.txt:apple onion apple
dir1/itemtext-dir1.txt:apple onion onion
dir1/itemtext-dir1.txt:apple onion yuzu
dir1/itemtext-dir1.txt:apple yuzu apple
dir1/itemtext-dir1.txt:apple yuzu onion
dir1/itemtext-dir1.txt:apple yuzu yuzu
dir1/itemtext-dir1.txt:onion apple apple
dir1/itemtext-dir1.txt:onion apple onion
dir1/itemtext-dir1.txt:onion apple yuzu
dir1/itemtext-dir1.txt:onion onion apple
dir1/itemtext-dir1.txt:onion yuzu apple
dir1/itemtext-dir1.txt:yuzu apple apple
dir1/itemtext-dir1.txt:yuzu apple onion
dir1/itemtext-dir1.txt:yuzu apple yuzu
dir1/itemtext-dir1.txt:yuzu onion apple
dir1/itemtext-dir1.txt:yuzu yuzu apple
itemtext2.txt:apple apple apple
itemtext2.txt:apple apple onion
itemtext2.txt:apple apple yuzu
itemtext2.txt:apple onion apple
itemtext2.txt:apple onion onion
itemtext2.txt:apple onion yuzu
itemtext2.txt:apple yuzu apple
itemtext2.txt:apple yuzu onion
itemtext2.txt:apple yuzu yuzu
itemtext2.txt:onion apple apple
itemtext2.txt:onion apple onion
itemtext2.txt:onion apple yuzu
itemtext2.txt:onion onion apple
itemtext2.txt:onion yuzu apple
itemtext2.txt:yuzu apple apple
itemtext2.txt:yuzu apple onion
itemtext2.txt:yuzu apple yuzu
itemtext2.txt:yuzu onion apple
itemtext2.txt:yuzu yuzu apple
itemtext.txt:apple apple apple
itemtext.txt:apple apple onion
itemtext.txt:apple apple yuzu
itemtext.txt:apple onion apple
itemtext.txt:apple onion onion
itemtext.txt:apple onion yuzu
itemtext.txt:apple yuzu apple
itemtext.txt:apple yuzu onion
itemtext.txt:apple yuzu yuzu
itemtext.txt:onion apple apple
itemtext.txt:onion apple onion
itemtext.txt:onion apple yuzu
itemtext.txt:onion onion apple
itemtext.txt:onion yuzu apple
itemtext.txt:yuzu apple apple
itemtext.txt:yuzu apple onion
itemtext.txt:yuzu apple yuzu
itemtext.txt:yuzu onion apple
itemtext.txt:yuzu yuzu apple

シンボリックリンクのディレクトリも再帰検索
(-Rオプション)

-Rオプションはシンボリックリンクの先のディレクトリやファイルも再帰検索するオプションです。通常の-rオプションではシンボリックリンクの先までは再帰検索を行いません。

-Rオプションで検索の除外をする際、-rオプションと扱いは同じになり、シンボリックリンクの先がディレクトリの場合は--exclude-dirオプションで、シンボリックリンクの先がファイルの場合は--excludeで除外することができます。

コマンド例

ディレクトリ構造 ▼表示

実行結果

dir1/itemtext-dir1.txt:apple apple apple
dir1/itemtext-dir1.txt:apple apple onion
dir1/itemtext-dir1.txt:apple apple yuzu
dir1/itemtext-dir1.txt:apple onion apple
dir1/itemtext-dir1.txt:apple onion onion
dir1/itemtext-dir1.txt:apple onion yuzu
dir1/itemtext-dir1.txt:apple yuzu apple
dir1/itemtext-dir1.txt:apple yuzu onion
dir1/itemtext-dir1.txt:apple yuzu yuzu
dir1/itemtext-dir1.txt:onion apple apple
dir1/itemtext-dir1.txt:onion apple onion
dir1/itemtext-dir1.txt:onion apple yuzu
dir1/itemtext-dir1.txt:onion onion apple
dir1/itemtext-dir1.txt:onion yuzu apple
dir1/itemtext-dir1.txt:yuzu apple apple
dir1/itemtext-dir1.txt:yuzu apple onion
dir1/itemtext-dir1.txt:yuzu apple yuzu
dir1/itemtext-dir1.txt:yuzu onion apple
dir1/itemtext-dir1.txt:yuzu yuzu apple
dir1_sym/itemtext-dir1.txt:apple apple apple
dir1_sym/itemtext-dir1.txt:apple apple onion
dir1_sym/itemtext-dir1.txt:apple apple yuzu
dir1_sym/itemtext-dir1.txt:apple onion apple
dir1_sym/itemtext-dir1.txt:apple onion onion
dir1_sym/itemtext-dir1.txt:apple onion yuzu
dir1_sym/itemtext-dir1.txt:apple yuzu apple
dir1_sym/itemtext-dir1.txt:apple yuzu onion
dir1_sym/itemtext-dir1.txt:apple yuzu yuzu
dir1_sym/itemtext-dir1.txt:onion apple apple
dir1_sym/itemtext-dir1.txt:onion apple onion
dir1_sym/itemtext-dir1.txt:onion apple yuzu
dir1_sym/itemtext-dir1.txt:onion onion apple
dir1_sym/itemtext-dir1.txt:onion yuzu apple
dir1_sym/itemtext-dir1.txt:yuzu apple apple
dir1_sym/itemtext-dir1.txt:yuzu apple onion
dir1_sym/itemtext-dir1.txt:yuzu apple yuzu
dir1_sym/itemtext-dir1.txt:yuzu onion apple
dir1_sym/itemtext-dir1.txt:yuzu yuzu apple
itemtext2.txt:apple apple apple
itemtext2.txt:apple apple onion
itemtext2.txt:apple apple yuzu
itemtext2.txt:apple onion apple
itemtext2.txt:apple onion onion
itemtext2.txt:apple onion yuzu
itemtext2.txt:apple yuzu apple
itemtext2.txt:apple yuzu onion
itemtext2.txt:apple yuzu yuzu
itemtext2.txt:onion apple apple
itemtext2.txt:onion apple onion
itemtext2.txt:onion apple yuzu
itemtext2.txt:onion onion apple
itemtext2.txt:onion yuzu apple
itemtext2.txt:yuzu apple apple
itemtext2.txt:yuzu apple onion
itemtext2.txt:yuzu apple yuzu
itemtext2.txt:yuzu onion apple
itemtext2.txt:yuzu yuzu apple
itemtext.txt:apple apple apple
itemtext.txt:apple apple onion
itemtext.txt:apple apple yuzu
itemtext.txt:apple onion apple
itemtext.txt:apple onion onion
itemtext.txt:apple onion yuzu
itemtext.txt:apple yuzu apple
itemtext.txt:apple yuzu onion
itemtext.txt:apple yuzu yuzu
itemtext.txt:onion apple apple
itemtext.txt:onion apple onion
itemtext.txt:onion apple yuzu
itemtext.txt:onion onion apple
itemtext.txt:onion yuzu apple
itemtext.txt:yuzu apple apple
itemtext.txt:yuzu apple onion
itemtext.txt:yuzu apple yuzu
itemtext.txt:yuzu onion apple
itemtext.txt:yuzu yuzu apple
itemtext_sym.txt:apple apple apple
itemtext_sym.txt:apple apple onion
itemtext_sym.txt:apple apple yuzu
itemtext_sym.txt:apple onion apple
itemtext_sym.txt:apple onion onion
itemtext_sym.txt:apple onion yuzu
itemtext_sym.txt:apple yuzu apple
itemtext_sym.txt:apple yuzu onion
itemtext_sym.txt:apple yuzu yuzu
itemtext_sym.txt:onion apple apple
itemtext_sym.txt:onion apple onion
itemtext_sym.txt:onion apple yuzu
itemtext_sym.txt:onion onion apple
itemtext_sym.txt:onion yuzu apple
itemtext_sym.txt:yuzu apple apple
itemtext_sym.txt:yuzu apple onion
itemtext_sym.txt:yuzu apple yuzu
itemtext_sym.txt:yuzu onion apple
itemtext_sym.txt:yuzu yuzu apple

この例ではあらかじめシンボリックリンクを準備しています。
dir1のシンボリックリンクのディレクトリはdir1_symです。
itemtext.txtのシンボリックリンクのファイルはitemtext_sym.txtです。
シンボリックリンクの作成コマンドはそれぞれ

になります。

絶対パスの確認コマンドは

または

になります。

 

 

 

パターンにマッチした行の後ろのn行を表示
(-Aオプション)

-Aオプションはパターンマッチングした行の後ろの行も表示することができます。
何行を表示するかは-Aオプションの後の数字で指定します。
この例では、3を指定したことでパターンマッチした行の後ろ3行分表示しています。

コマンド例

itemtext.txt ▼表示

実行結果

-Aオプションが設定されていても、grepコマンドは表示する行を何度も繰り返しません。

コマンド例

実行結果

apple apple apple
apple apple onion
apple apple yuzu
apple onion apple
apple onion onion
apple onion yuzu
apple yuzu apple
apple yuzu onion
apple yuzu yuzu
onion apple apple
onion apple onion
onion apple yuzu
onion onion apple
onion onion onion
--
onion yuzu apple
onion yuzu onion
--
yuzu apple apple
yuzu apple onion
yuzu apple yuzu
yuzu onion apple
yuzu onion onion
--
yuzu yuzu apple
yuzu yuzu onion

 

 

 

パターンにマッチした行の前からn行を表示
(-Bオプション)

-Bオプションはパターンマッチングした行の前の行を表示することができます。
何行を表示するかは-Bオプションの後の数字で指定します。
この例では、3を指定したことでパターンマッチした行の前3行分表示しています。

コマンド例

itemtext.txt ▼表示

実行結果

-Bオプションが設定されていても、-Aオプションと同様にgrepコマンドは表示する行を何度も繰り返しません。

 

 

 

パターンにマッチした行の前後n行を表示
(-Cオプション)

-Cオプションはパターンマッチングした行の前後の行を表示することができます。
何行を表示するかは-Cオプションの後の数字で指定します。
この例では、3を指定したことでパターンマッチした行の前後3行分表示しています。

コマンド例

itemtext.txt ▼表示

実行結果

-Cオプションが設定されていても、-Aオプションと同様にgrepコマンドは表示する行を何度も繰り返しません。

 

 

 

前後に表示した時の行の区切り文字を変更
(--group-separator=string)

--group-separatorオプションは、-A,-B,-Cオプションの時に、パターンマッチした行の前後の表示で使われていた区切り文字を任意の文字列で変更することができます。

コマンド例

itemtext.txt ▼表示

実行結果

apple apple apple
apple apple onion
apple apple yuzu
apple onion apple
apple onion onion
apple onion yuzu
apple yuzu apple
apple yuzu onion
apple yuzu yuzu
onion apple apple
onion apple onion
onion apple yuzu
onion onion apple
onion onion onion
*****separator*****
onion yuzu apple
onion yuzu onion
*****separator*****
yuzu apple apple
yuzu apple onion
yuzu apple yuzu
yuzu onion apple
yuzu onion onion
*****separator*****
yuzu yuzu apple
yuzu yuzu onion

前後に表示したときの行の区切り文字を表示しない
(--no-group-separator)

--no-group-separatorオプションは、-A,-B,-Cオプションの時に、パターンマッチした行の前後の表示で使われていた区切り文字を表示しないようにすることができます。

コマンド例

itemtext.txt ▼表示

実行結果

apple apple apple
apple apple onion
apple apple yuzu
apple onion apple
apple onion onion
apple onion yuzu
apple yuzu apple
apple yuzu onion
apple yuzu yuzu
onion apple apple
onion apple onion
onion apple yuzu
onion onion apple
onion onion onion
onion yuzu apple
onion yuzu onion
yuzu apple apple
yuzu apple onion
yuzu apple yuzu
yuzu onion apple
yuzu onion onion
yuzu yuzu apple
yuzu yuzu onion

参考

外部リンクGNU grepのマニュアル