grep コマンド
お兄ちゃん!
今回は正規表現を
使ったコマンドを
教えてくれるんだよね?
そうだよ!
今回は
grep を学ぼう!
grep はファイルの内容から
指定された正規表現を検索して
マッチした行を表示してくれるよ!
grep [オプション]... 正規表現 [ファイル]
| オプション | 役割 |
|---|---|
-E, --extended-regexp | 拡張正規表現を使って検索(+ や ? などが使える) |
-F, --fixed-strings | 正規表現を使わず指定された文字列で検索 |
-o, --only-matching | |
-c, --count | |
-l, --files-with-matches | |
-L, --files-without-match | |
-m 回数, --max-count=回数 | ファイル内で指定された回数マッチした時点で終了 |
-q, --quiet, --silent | 結果を表示しない |
-s, --no-messages | エラーメッセージを表示しない |
grep を使えばファイルの内容を目で調べなくても良くなるね!正規表現はシェルで特殊な意味を持つ記号を多く使うよなので正規表現は「シングルクォート( で 囲うことが多いんだ
')」わかった!正規表現はなるべくシングルクォートで囲うね
grep は指定された正規表現が見つかったら面白そうなコマンドだね!
/etc/passwd ファイルを検索してみようユーザ情報が保管されている設定ファイルなんだ:)」cat /etc/passwd
実際に見るのが理解しやすいよね!
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
...
shigeru:x:1000:1000:Shigeru Wakagi:/home/shigeru:/bin/bash
midori:x:1001:1001:Midori Wakagi:/home/midori:/bin/bash
確かに「コロン( 区切りで 色々な情報があって最初がユーザ名のようだね!
:)」この中から
midori ユーザの情報だけを表示したい場合にはどうすればいいだろう?これではどうかな?
grep 'midori' /etc/passwd
確かに見つかるねだけど最初のユーザ名以外の場所に
midori という文字列が入っているとその行も一緒に表示されてしまうよユーザ名が先頭に書かれていることを利用しよう!
それならこれでどうかな?
grep '^midori' /etc/passwd
さっきよりもいいね!でも
midoriiro ユーザのようにmidori から始まっているユーザの行も引っかかって表示されてしまうんだこうのような場合を避けるにはどうしたらいいんだろう?ヒントは「情報はコロン( だよ
:)で区切られている」あっ!それならこうだよね!
grep '^midori:' /etc/passwd
よくできました!
grep はこのように正規表現を指定して調べたい文字列を探すことができるよ今回は文字列検索コマンド
grep を学んだよ!grep で見つけた内容をパイプで別コマンド渡して加工するなどさらに高度な使い方もできるんだまずは文字列を探すコマンドとして慣れていこう!