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
は指定された正規表現が見つかったら面白そうなコマンドだね!
/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
で見つけた内容をパイプで別コマンド渡して加工するなどさらに高度な使い方もできるんだまずは文字列を探すコマンドとして慣れていこう!