役割
Grep フィルタは、ファイル内の特定の文字パターンを検索し、そのパターンを含むすべての行を表示します。ファイル内を検索するパターンを正規表現といいます。. (grep グローバル検索と正規表現の出力を表します)。
文法
grep
-options(パラメータ) pattern(キーワード) files(テキストファイル)
主なパラメータ
-c
:マッチパターンの行数だけ出力します。
-h
:一致した行のみが表示され、ファイル名は表示されません。
-i
:マッチ時の大文字小文字は無視します。
-l
:ファイル名のリストだけが表示されます。
-n
:一致する行と行番号が表示されます。
-r
:ファイルが存在するディレクトリ、すなわちパスを表示する。
-v
:一致しない行がすべて出力されます。
-e
exp : このオプションを指定する式は、複数回使用できます。
-f
file :1つまたは複数のルールスタイルを含むルールファイルを指定し、grepに、1行に1つのルールスタイルでルールの条件を満たすファイル内容を検索させる。
-E
:スタイルを拡張された正規表現として使います。
-w
:単語全体にマッチする。
-r
:サブディレクトリを検索することは明示的に要求されます。
-d skip
:サブディレクトリを無視する。
-o
:一致行の一致部分のみが印刷され、その各部分は別々の出力行に印刷される。
\
:正規表現の特殊文字の本来の意味は無視されます。
[ ]
:[a]のような単一の文字、すなわちaが要件を満たす。
[ - ]
:[a-z]のような範囲、つまり、a、b、cからzまでが一致します。
.
:全ての文字を表しています。
*
:すべての文字、長さは0でもよい。
-A n
: お手本のスタイルに合った行を表示する以外は、その行の次のn
行を表示する。
-B n
: お手本のスタイルに合った行を表示する以外は、その行の前のn
行を表示する。
-C n
: お手本のスタイルに合った行を表示する以外は、その行の前後のn
行を表示する。
命令例
①. 入力として次のファイルを考えます,キー入力cat > geekfile.txt
そして、enterキーを押します;
$ cat > geekfile.txt
②. 次のように入力する、そして、enterキーを押します;
unix is great os. unix is opensource. unix is free os.
learn operating system.
Linux is a family of open-source Unix-like operating systems based on the Linux kernel.
Unix linux which one you choose.
uNix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.
③. キーボードでCtrl+D
押す (あるいは、キー入力Control-D
),テキストを保存し、シェルプロンプトに戻ります。
1、 -i
マッチ時の大文字小文字は無視します:オプションにより、検索されたファイル内で文字列の大文字小文字を区別なく検索することができます。「unix
」、「unix
」、「unix
」などとマッチします。
$ grep -i "UNix" geekfile.txt
2、-c
マッチパターンの行数だけ出力します: 与えられた文字列のパターンにマッチする行数を見つけることができます。
$ grep -c "unix" geekfile.txt
アウトプット:
3、-l
パターンにマッチしたファイル名を表示します: 与えられた文字列パターンを含むファイルだけを表示することができる。
$ grep -l "unix" *
or
$ grep -l "unix" geekfile.txt f1.txt f2.txt f3.txt
アウトプット:
4、-w
匹配文件中的整个单词: デフォルトでは、grepはファイル内のサブ文字列として現れても、与えられた文字列/パターンにマッチする。grepの-w
オプションは単語全体にのみマッチする。
$ grep -w "unix" geekfile.txt
5、-o
一致行の一致部分のみが印刷されます: デフォルトでは、grepは一致する文字列を含む行全体を表示する。-o
オプションを使ってgrepにマッチした文字列のみを表示させることができます。
$ grep -o "unix" geekfile.txt
6、grep -n
出力時に行番号を表示:一致する行のファイルと行番号を表示する。
$ grep -n "unix" geekfile.txt
7、-v
パターン一致を反転:-v
オプションを使用して、指定された検索パターンに一致しない行を表示することができます。
$ grep -v "unix" geekfile.txt
8、^
文字列で始まる行にマッチします。^
正規表現モード行の先頭を指定します。grepでは、与えられた文字列またはパターンから始まる行にマッチするために使用することができる。
$ grep "^unix" geekfile.txt
9、$
文字列で終わる行にマッチします: $
正規表現モードは行の最後を指定します。grepでは、与えられた文字列またはパターンで終わる行にマッチさせるために使用することができる。
$ grep "os.$" geekfile.txt
10、-e
このオプションを指定する式は、複数回使用できます:
$ grep –e "unix" –e "linux" –e "open-source" geekfile.txt
11、 -f
file 1つまたは複数のルールスタイルを含むルールファイルを指定し、grepに、1行に1つのルールスタイルでルールの条件を満たすファイル内容を検索させる。
$ cat > pattern.txt
Agarwal
Aggarwal
Agrawal
$ grep –f pattern.txt geekfile.txt
$ grep -f pattern.txt geekfile.txt noSuchFile.txt
12、1つのファイルからn行を印刷する: -a
結果の後に検索行とn行を印刷し、
-b
は検索行と検索行の前n行を出力します。
-c
は、検索行と検索行の前後n行を印刷します。
① 文法:
$ grep -A[NumberOfLines(n)] [search] [file]
$ grep -B[NumberOfLines(n)] [search] [file]
$ grep -C[NumberOfLines(n)] [search] [file]
② 例:
$ grep -A1 learn geekfile.txt
13、-r
ファイルが存在するディレクトリ、すなわちパスを探します:
$ grep –r "linux" ./