¿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

¿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

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.


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

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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.