Como combinar duas instruções grep e exibir seus resultados juntos?

8

Suponha que sim

   grep "MyVariable = False" FormA.frm

   ... result1

   grep "MyVariable = True"  FormA.frm

   ... result2

Como escrever o comando grep para que eu possa dizer algo como

   grep "MyVariable = False" OR "MyVariable = True" FormA.frm
Código Azul
fonte
Você deseja testar se uma linha contém Var1 = FalseAND Var2 = True? Ou se um arquivo contém Var1 = FalseAND Var2 = True? Ou alguma outra coisa? Um exemplo ajudaria.
Mikel
Eu usei E por engano. Eu quis dizer "OU".
CodeBlue

Respostas:

10

O que você realmente deseja é "OU", não "E". Se "AND" for usado, logicamente, você não obterá linhas (a menos que a linha seja algo como "MyVariable = False ... MyVariable = True".

Use "grep estendido" e o operador OR ( |).

grep -E 'MyVariable = False|MyVariable = True' FormA.frm
Arcege
fonte
1
Sim, você está certo. Eu queria OR, mas especifiquei AND incorretamente. Obrigado.
CodeBlue
Aliás, notei que isso funciona apenas com um "E" maiúsculo e não um "e" minúsculo. Portanto, os argumentos grep diferenciam maiúsculas de minúsculas.
CodeBlue
1
@CodeBlue: você deve se acostumar com isso: quase tudo é sensível a maiúsculas em Unix
enzotib
Ok, obrigado @enzotib. Eu venho de um plano de fundo do Windows.
CodeBlue
Também funciona com egrep(que eu uso) em vez de grep -Equal é o mais canônico.
Arcege 28/03/12
3

Você deveria usar

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

onde a \|sequência significa uma alternativa e os delimitadores \(e \)são para agrupamento.

enzotib
fonte
Sim, isso também funciona, embora seja um pouco confuso para mim. Obrigado.
CodeBlue
1

Você pode simplesmente fazer

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

Para responder de outra maneira do que já foi dito ...

Você também pode especificar várias correspondências para grep, especificando a -eopção várias vezes

% grep -e "MyVariable = True" -e "MyVariable = False" FormA.frm
 ... result1
 ... result2
Vince
fonte
Seria bom se você escrevesse sua resposta usando o texto da pergunta em vez de criar o seu próprio exemplo.
G-Man diz 'Reinstate Monica'