2つのgrepステートメントを組み合わせて結果を一緒に表示する方法は?


8

私がやるとします

   grep "MyVariable = False" FormA.frm

   ... result1

   grep "MyVariable = True"  FormA.frm

   ... result2

次のように言うことができるようにgrepコマンドを書く方法

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

Var1 = FalseAND が含まれているかどうかをテストしVar2 = Trueますか?または、ファイルVar1 = FalseAND が含まれているかどうVar2 = Trueか または、他の何か?例が役立ちます。
ミケル

誤ってANDを使用しました。「または」を意味しました。
CodeBlue 2012年

回答:


10

本当に必要なのは「AND」ではなく「OR」です。「AND」が使用されている場合、論理的には行はありません(行が「MyVariable = False ... MyVariable = True」のようなものでない限り)。

「拡張grep」とOR演算子(|)を使用します。

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

1
はい、あなたが正しい。ORが必要でしたが、ANDが正しく指定されていません。ありがとう。
CodeBlue 2012年

ちなみに、これは大文字の「E」でのみ機能し、小文字の「e」では機能しないことに気付きました。したがって、grep引数では大文字と小文字が区別されると思います。
CodeBlue

1
@CodeBlue:これに慣れる必要があります:Unixではほとんどすべての大文字と小文字が区別されます
enzotib

ありがとう@enzotib。私はWindowsの出身です。
CodeBlue 2012年

また、より標準的なものではegrepなく、(私が使用する)でも動作しgrep -Eます。
Arcege 2012年

3

あなたは使うべきです

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

どこ\|のシーケンスは、代替、および区切り文字を意味\(し、\)グループ化するためのものです。


うん、これも機能しますが、少し混乱します。ありがとう。
CodeBlue


1

すでに言われていることとは異なる方法で答えるために...

-eオプションを複数回指定して、grepに複数の一致を指定することもできます

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

独自の例を作成するのではなく、質問のテキストを使用して回答を書くとよいでしょう。
G-Manは 'Reinstate Monica'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.