通常のgrepコマンドではあいまいな検索は行えないのだが、時折うろ覚えなキーワードでもgrepしてもらいたいこともある。
そんなときは、あいまい検索を行えるgrepとして『agrep』コマンドというものがある。

1.インストール

まずはインストールから。
以下のコマンドでインストールできる。

sudo yum install agrep # RHEL系
sudo apt-get install agrep # Debian/Ubuntu系

2.実際に使ってみる

それでは、実際にあいまい検索を行わせてみよう。
agrepコマンドは以下のように使用する。不一致の許容数を指定しない場合、完全一致したキーワードのみを抽出する。

agrep -不一致許容数 キーワード ファイルPATH
[root@BS-PUB-CENT7-01 ~]# cat /tmp/test3.txt
abcdefg
abddefg #1文字違う
abcdefg
abcdr9g #2文字違う
2b3d4fg #3文字違う
[root@BS-PUB-CENT7-01 ~]# agrep abcdefg /tmp/test3.txt
abcdefg
abcdefg
[root@BS-PUB-CENT7-01 ~]# agrep -1 abcdefg /tmp/test3.txt
abcdefg
abddefg #1文字違う
abcdefg
[root@BS-PUB-CENT7-01 ~]# agrep -2 abcdefg /tmp/test3.txt
abcdefg
abddefg #1文字違う
abcdefg
abcdr9g #2文字違う
[root@BS-PUB-CENT7-01 ~]# agrep -3 abcdefg /tmp/test3.txt
abcdefg
abddefg #1文字違う
abcdefg
abcdr9g #2文字違う
2b3d4fg #3文字違う

「-B」オプションを使用すると、キーワードに一番近いと思われる行を抽出してくれる。

[root@BS-PUB-CENT7-01 ~]# cat /tmp/test3.txt
abcdefg
abddefg #1文字違う
abcdefg
abcdr9g #2文字違う
2b3d4fg #3文字違う
[root@BS-PUB-CENT7-01 ~]# agrep -B abce /tmp/test3.txt
abcdefg
abcdefg
abcdr9g #2文字違う

その他のオプションについては、基本的にgrepコマンドと同じものが利用できる。