$ grep -Fiw cat <file | grep -Fiw elephant
Cat is smaller than elephant
Elephant is larger than cat
Primeiramente, extraímos todas as linhas do arquivo file
que contém a palavra cat
e, em seguida, restringimos essas linhas àquelas que contêm a palavra elephant
.
Isso é feito usando grep -F -i -w
, onde
-
-F
faz grep
tratar o padrão como uma string fixa, não como uma expressão regular,
-
-i
torna grep
a correspondência insensível a maiúsculas e
-
-w
faz com que grep
corresponda apenas a palavras completas.
A opção -w
é uma extensão do padrão POSIX para grep
, mas é implementado pelas implementações mais comuns de grep
. Basicamente, ele impede as correspondências do patten dado quando a string correspondente faz parte de uma palavra mais longa.
Note que não estou combinando com a linha
Cat and elephants live in different environment
Isso ocorre devido ao s
final em elephants
. Eu também não combinaria com a linha
elephantiasis is catastrophic
pelo mesmo motivo.
Você deseja permitir um s
no final das palavras, use
$ grep -Eiw 'cats?' <file | grep -Eiw 'elephants?'
Cat is smaller than elephant
Elephant is larger than cat
Cat and elephants live in different environment
Aqui, usamos uma expressão regular (estendida) em vez de uma string fixa em ambas as invocações de grep
. As expressões corresponderão a um s
opcional no final das duas palavras. Agora, correspondemos cat
e cats
(sem distinção entre maiúsculas e minúsculas), mas não corresponderia a catnip
, catsup
ou scat
.