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

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

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.


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

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

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'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.