Use .*
:
grep "${word1}.*${word2}" "$filename"
-
.
corresponde a qualquer caractere -
*
corresponde a qualquer número do caractere anterior
Eu quero procurar por linhas com "word1 ... word2", em que '...' poderia ser qualquer caractere diferente. Até agora eu usei dois greps para o mesmo assim:
grep "$word1" $filename | grep "$word2"
Existe uma maneira mais rápida de fazer isso supondo algo assim:
grep "$word1*$word2" $filename
onde talvez * poderia ser algum caracter especial que pode ser qualquer outro caractere (s)?
Se você precisar que as duas palavras sejam delimitadas , ou seja, se você não quiser corresponder abba
se uma das palavras for bb
, use
grep "\<$word1\>.*\<$word2\>" "$filename"
O padrão \<
(aqui \<
para escapar da primeira barra invertida do shell) corresponde logo antes de uma palavra, e \>
funciona de maneira semelhante, mas logo após uma palavra.
Há alo \b
que corresponde a antes e depois e [[:<:]]
e [[:>:]]
que funcionam como \<
e \>
. Quais são implementados por grep
varia.
Tags grep shell-script