0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Unix/Linux に関する grep コマンド

Last updated at Posted at 2021-04-24

役割

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" ./

アウトプット:
在这里插入图片描述

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?