¿Existe una utilidad similar a grep que me permita hacer búsquedas grep con operadores lógicos? Quiero poder anidar y combinar las construcciones lógicas libremente. Por ejemplo, cosas como esta deberían ser posibles:
grep (term1 && term2) || (term1 && (term3 xor term4)) *
Me doy cuenta de que esto se puede hacer con vainilla grep y secuencias de comandos bash adicionales, pero mi objetivo aquí es evitar tener que hacer eso.

-Eno es del todo equivalente al&&hecho de que es sensible al ordengrep foo | grep bares una forma más general de hacer AND.Podrías usar perl:
fuente
Creo que eso logra lo que intentas hacer. Se
deletes de salida de cualquier línea que no coincideterm1, sebranchos de la secuencia de comandos (y por lo autoprints) cualquier línea que queda y que los partidosterm2y para las líneas que permanecen elimina cualquier que no coincidenterm3y de aquellos que lo hacen ningún partidoterm4.sedlas secuencias de comandos se evalúan en orden y todas las pruebas son booleanas, por lo que cualquier acción resultante de una prueba afectará directamente el comportamiento de las siguientes acciones.fuente
Utilizo para encadenar
grepcomandos para lograr un AND lógico:Creo que es bastante sencillo, similar a Unix y elegante.
Luego, puede combinar (como @Tushi explicó a fondo) con la
-Eopción de OR y-vpara negar.Su ejemplo específico es bastante desagradable y probablemente se beneficiaría de alguna utilidad más poderosa (vea la respuesta de @ muru).
fuente