grepを使用してテキストファイル内の特定の単語や他の単語の発生を検索するには?
「bot」または「spider」を含むApacheログファイルのすべての行をフィルタリングしたいと思います。
cat /var/log/apache2/access.log|grep -i spider
「クモ」を含む行のみが表示されます。ところで、「ボット」を追加するにはどうすればよいですか?
答え1
古典的な正規表現を使用してください。
grep -i 'spider\|bot'
または拡張正規表現(またはperl regex -P
):
grep -Ei 'spider|bot'
または複数のリテラルパターン(正規表現よりも高速):
grep -Fi -e 'spider' -e 'bot'
答え2
cat /var/log/apache2/access.log | grep -E 'spider|bot'
|
-Eオプションを使用すると、論理ORに使用できる拡張正規表現を有効にできます。
また、他のプロセスを呼び出す代わりに、次のコマンドを使用してこれを実行できます。
grep -E 'spider|bot' /var/log/apache2/access.log
答え3
$ cat /var/log/apache2/access.log|grep -i 'スパイダー\|ボット'
上記の操作が実行されます。
egrepを使用することもできます。
$ cat /var/log/apache2/access.log|egrep -i 'スパイダー|ボット'
egrep は grep(grep -E) の拡張です。 |前に \ を使用する必要はありません。 egrepを使用している場合。
答え4
代わりにegrepを使用できます。
cat /var/log/apache2/access.log|egrep -i 'spider|bot'