Come combinare due istruzioni grep e mostrare i loro risultati insieme?


8

Supponiamo di si

   grep "MyVariable = False" FormA.frm

   ... result1

   grep "MyVariable = True"  FormA.frm

   ... result2

Come scrivere il comando grep in modo che io possa dire qualcosa del genere

   grep "MyVariable = False" OR "MyVariable = True" FormA.frm

Vuoi verificare se una riga contiene Var1 = FalseAND Var2 = True? O se un file contiene Var1 = FalseAND Var2 = True? O qualcos'altro? Un esempio sarebbe d'aiuto.
Mikel,

Ho usato E per errore. Intendevo "OR".
CodeBlue,

Risposte:


10

Quello che vuoi veramente è "OR", non "AND". Se si utilizza "AND", logicamente non si otterranno righe (a meno che la riga non sia simile a "MyVariable = False ... MyVariable = True".

Utilizzare "extended grep" e l'operatore OR ( |).

grep -E 'MyVariable = False|MyVariable = True' FormA.frm

1
Sì hai ragione. Volevo OR ma erroneamente specificato AND. Grazie.
CodeBlue,

Per inciso, ho notato che funziona solo con una "E" maiuscola e non con una "e" minuscola. Quindi suppongo che gli argomenti grep facciano distinzione tra maiuscole e minuscole.
CodeBlue,

1
@CodeBlue: dovresti abituarti a questo: quasi tutto fa distinzione tra maiuscole e minuscole in Unix
enzotib,

Ok grazie @enzotib. Vengo da uno sfondo di Windows.
CodeBlue,

Funziona anche con egrep(che io uso) invece del grep -Equale è il più canonico.
Arcege,

3

Dovresti usare

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

dove la \|sequenza significa un'alternativa, i delimitatori \(e \)sono per il raggruppamento.


Sì, anche questo funziona, anche se per me è un po 'confuso. Grazie.
CodeBlue,

1

Puoi semplicemente farlo

grep -E "MyVariable = False|MyVariable = True" FormA.frm

1

Per rispondere in un altro modo rispetto a quanto è già stato detto ...

Puoi anche specificare più partite da grep, specificando -epiù volte l' opzione

% grep -e "MyVariable = True" -e "MyVariable = False" FormA.frm
 ... result1
 ... result2

Sarebbe bello se scrivessi la tua risposta usando il testo della domanda piuttosto che creare il tuo esempio.
G-Man dice "Ripristina Monica" il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.