
Tengo estas dos expresiones regulares grep
grep -e '[Yy].*[Yy].[Ee][Ee]' first.txt
y
grep -e '[Ee][Ee].*[Yy].*[Yy]' first.txt
¿Cómo concateno estos dos en una sola expresión regular?
Respuesta1
¿Concatenando los patrones?
grep -e '[Yy].*[Yy].[Ee][Ee][Ee][Ee].*[Yy].*[Yy]' first.txt
¿O te refieres esencialmente a hacer un AND lógico de los dos patrones?
Si es lo último, debe fingir, ya que si bien tiene OR ( ) y NOT ( ; ) grep
incorporados , no tiene un AND incorporado. Una forma es canalizar la salida de uno al otro:|
-v
[^]
grep
grep -e '[Yy].*[Yy].[Ee][Ee]' first.txt | grep '[Ee][Ee].*[Yy].*[Yy]'
La otra forma es buscar ambos patrones en serie, en cualquier orden, con un OR lógico (abreviado para mayor brevedad):
grep -Ee 'pattern1.*pattern2|pattern2.*pattern1' input.txt
Considero que el primero es más conciso y más fácil de mantener.
Respuesta2
Puede buscar ambos patrones a la vez usándolos \|
entre cada patrón.
grep -e '[Yy].*[Yy].[Ee][Ee]'\|'[Ee][Ee].*[Yy].*[Yy]'