如何使用 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'