将 grep 与 或 [重复] 一起使用

将 grep 与 或 [重复] 一起使用

如何使用 grep 在文本文件中搜索某个单词或另一个单词的出现?

我想过滤 apache 日志文件中的所有行,包括“bot”或“spider”

cat /var/log/apache2/access.log|grep -i spider

仅显示包含“spider”的行,但如何添加“bot”?

答案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。

此外,您可以使用以下命令来执行此操作,而不是调用另一个进程 - cat -

grep -E 'spider|bot' /var/log/apache2/access.log

答案3

$ cat /var/log/apache2/access.log|grep -i 'spider\|bot'

上面的内容就可以完成这项工作。

您还可以使用egrep

$ cat /var/log/apache2/access.log|egrep -i 'spider|bot'

egrep 是 grep 的扩展 (grep -E)。您不必在 | 之前使用 \ 。如果你使用egrep。

答案4

您可以使用egrep代替:

cat /var/log/apache2/access.log|egrep -i 'spider|bot'

相关内容