¿Cómo combinar dos declaraciones grep y mostrar sus resultados juntos?

8

Supongamos que lo hago

   grep "MyVariable = False" FormA.frm

   ... result1

   grep "MyVariable = True"  FormA.frm

   ... result2

Cómo escribir el comando grep para poder decir algo como

   grep "MyVariable = False" OR "MyVariable = True" FormA.frm
Código Azul
fuente
¿Quiere probar si una línea contiene Var1 = FalseAND Var2 = True? ¿O si un archivo contiene Var1 = FalseAND Var2 = True? ¿O algo mas? Un ejemplo ayudaría.
Mikel
Usé Y por error. Quise decir "O".
CodeBlue

Respuestas:

10

Lo que realmente quieres es "O", no "Y". Si se usa "AND", entonces lógicamente, no obtendrá líneas (a menos que la línea sea algo así como "MyVariable = False ... MyVariable = True".

Use "grep extendido" y el operador OR ( |).

grep -E 'MyVariable = False|MyVariable = True' FormA.frm
Arcege
fuente
1
Sí tienes razón. Quería OR pero especifiqué incorrectamente AND. Gracias.
CodeBlue
Por cierto, noté que esto funciona solo con una "E" mayúscula y no una "e" minúscula. Entonces, los argumentos grep distinguen entre mayúsculas y minúsculas, supongo.
CodeBlue
1
@CodeBlue: debería acostumbrarse a esto: casi todo
distingue entre
Ok, gracias @enzotib. Vengo de un fondo de Windows.
CodeBlue
También funciona con egrep(que uso) en lugar de grep -Ecuál es el más canónico.
Arcege
3

Deberías usar

grep "MyVariable = \(False\|True\)" FormA.frm

donde la \|secuencia significa una alternativa, y los delimitadores \(y \)son para agrupar.

enzotib
fuente
Sí, esto también funciona, aunque es un poco confuso para mí. Gracias.
CodeBlue
1

Simplemente puedes hacer

grep -E "MyVariable = False|MyVariable = True" FormA.frm
Sachin Divekar
fuente
1

Para responder de otra manera que lo que ya se ha dicho ...

También puede especificar varias coincidencias para grep, especificando la -eopción varias veces

% grep -e "MyVariable = True" -e "MyVariable = False" FormA.frm
 ... result1
 ... result2
Vince
fuente
Sería bueno que escribieras tu respuesta usando el texto de la pregunta en lugar de inventar tu propio ejemplo.
G-Man dice 'Reincorporar a Monica' el