GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo ejecutar Grep con patrones múltiples y?

Me gustaría obtener la coincidencia de patrón múltiple con Y implícito entre patrones, es decir, equivalente a ejecutar varios greps en una secuencia:

grep pattern1 | grep pattern2 | ...

Entonces, ¿cómo convertirlo en algo así?

grep pattern1 & pattern2 & pattern3

Me gustaría usar un solo grep porque estoy creando argumentos dinámicamente, por lo que todo tiene que caber en una cadena. El uso del filtro es una función del sistema, no grep, por lo que no es un argumento para ello.

No confundas esta pregunta con:

grep "pattern1|pattern2|..."

Este es un O coincidencia de múltiples patrones.

Respuesta aceptada:

agrep puede hacerlo con esta sintaxis:

agrep 'pattern1;pattern2'

Con GNU grep , cuando se crea con compatibilidad con PCRE, puede hacer:

grep -P '^(?=.*pattern1)(?=.*pattern2)'

Con ast grep :

grep -X '.*pattern1.*&.*pattern2.*'

(añadiendo .* s como <x>&<y> coincide con cadenas que coinciden con <x> y <y> exactamente , a&b nunca coincidiría ya que no existe tal cadena que pueda ser ambos a y b al mismo tiempo).

Si los patrones no se superponen, también puede hacer lo siguiente:

grep -e 'pattern1.*pattern2' -e 'pattern2.*pattern1'

La mejor forma portátil es probablemente con awk como ya se mencionó:

awk '/pattern1/ && /pattern2/'

Con sed :

sed -e '/pattern1/!d' -e '/pattern2/!d'

Tenga en cuenta que todos tendrán una sintaxis de expresión regular diferente.


Linux
  1. ¿Cómo hacer coincidir patrones que no distinguen entre mayúsculas y minúsculas con Ls?

  2. ¿Cómo encontrar múltiples cadenas en archivos?

  3. Cómo grep con salida de color

  4. ¿Cómo ejecutar múltiples procesos Tor a la vez con diferentes direcciones IP de salida?

  5. grep pares de patrones y archivo

Cómo ejecutar Python Scripts con Apache y mod_wsgi en Ubuntu 20.04

Cómo ejecutar el software de Windows en Linux con botellas

Cómo compilar y ejecutar programas C, C++ en Linux

Cómo ejecutar un alias con Sudo en Linux

Cómo escribir y ejecutar un programa C en Linux

Cómo ejecutar aplicaciones GUI de Linux en Windows 10 con WSL y WSLg