use o regex clássico:
grep -i 'spider\|bot'
ou regex estendido (ou mesmo perl regex -P
):
grep -Ei 'spider|bot'
ou vários padrões literais (mais rápido que uma expressão regular):
grep -Fi -e 'spider' -e 'bot'
Como faço para pesquisar em um arquivo de texto com grep para a ocorrência de uma palavra ou outra palavra?
Eu quero filtrar o arquivo de log do apache para todas as linhas, incluindo "bot" ou "spider"
cat /var/log/apache2/access.log|grep -i spider
mostra apenas as linhas, incluindo "spider", mas como eu adiciono "bot"?
cat /var/log/apache2/access.log | grep -E 'spider|bot'
Com a opção -E, você ativa a expressão regular estendida, em que é possível usar |
para uma OR lógica.
Além disso, em vez de invocar outro processo - cat - você pode fazer isso com
grep -E 'spider|bot' /var/log/apache2/access.log
$ cat /var/log/apache2/access.log|grep -i 'spider \ | bot'
O acima vai fazer o trabalho.
Você também pode usar o egrep
$ cat /var/log/apache2/access.log|egrep -i 'spider | bot'
egrep é grep estendido (grep -E). Você não terá que usar \ before | se você usa egrep.
Você pode usar o egrep em vez disso:
cat /var/log/apache2/access.log|egrep -i 'spider|bot'
Tags bash grep filter regular-expression