2005年09月17日

grep での正規表現

Linux/UNIX を使う人は正規表現をゼヒ知っておいてほしいところです。
逆に知らないと、謎の挙動に悩むことになります。
たとえば grep を使うときに IP アドレスを探そうとしましょう。

grep '192.168.1.0' ほにゃほにゃー

などとやってしまうと、
192.168.110.20 とかも平気で検索に引っかかってきます。
コレは正規表現で '.' (ピリオド=ドット) が任意の一文字に match するから。

とはいっても正規表現はプログラムによって、どこまでサポートされるのかが違いますし、
perl レベルなのか sed レベルなのかでは () (カッコ) の記述方法とかも違います。
というわけで、今回は正規表現を使わない方法について。

grep シリーズの中には fgrep という grep があります。
grep との違いは正規表現が有効か否か。
メールアドレスとか IP アドレスとか正規表現を利用したくないときに便利です。
実際に簡単な例で試してみると、こんな感じ。
# プロンプトは bash ポイですが、tcsh 上の処理です
ちょっと覚えてると大変便利ですよー。

[k-square@server] ~
$ cat > a
b
c
d
e
f
g
^D
[k-square@server] ~
$ fgrep '.' a

[k-square@server] ~
$ echo $status
1

[k-square@server] ~
$ grep '.' a
b
c
d
e
f
g

[k-square@server] ~
$ echo $status
0

Posted by k-square : 2005年09月17日 21:22 | Linux/UNIX
コメント
コメントする









名前、アドレスを登録しますか?