agrep
pode fazer isso com esta sintaxe:
agrep 'pattern1;pattern2'
Com o GNU grep
, quando construído com suporte a PCRE, você pode fazer:
grep -P '^(?=.*pattern1)(?=.*pattern2)'
Com ast grep
:
grep -X '.*pattern1.*&.*pattern2.*'
(adicionar .*
s como <x>&<y>
corresponde a sequências que correspondem a <x>
e <y>
exatamente , a&b
nunca corresponderia, pois não há essa sequência que possa seja a
e b
ao mesmo tempo).
Se os padrões não se sobrepuserem, você também poderá:
grep -e 'pattern1.*pattern2' -e 'pattern2.*pattern1'
A melhor maneira portátil é provavelmente com awk
, como já mencionado:
awk '/pattern1/ && /pattern2/'
com sed
:
sed -e '/pattern1/!d' -e '/pattern2/!d'
Por favor, esteja ciente de que todos eles terão uma sintaxe de expressão regular diferente.