Bagaimana cara menggabungkan dua pernyataan grep dan menampilkan hasilnya bersama?

8

Misalkan saya lakukan

   grep "MyVariable = False" FormA.frm

   ... result1

   grep "MyVariable = True"  FormA.frm

   ... result2

Cara menulis perintah grep sehingga saya bisa mengatakan sesuatu seperti

   grep "MyVariable = False" OR "MyVariable = True" FormA.frm
Kode biru
sumber
Anda ingin menguji apakah suatu baris mengandung Var1 = FalseDAN Var2 = True? Atau apakah suatu file berisi Var1 = FalseDAN Var2 = True? Atau sesuatu yang lain? Contoh akan membantu.
Mikel
Saya menggunakan DAN karena kesalahan. Maksud saya "ATAU".
CodeBlue

Jawaban:

10

Yang Anda inginkan adalah "ATAU", bukan "DAN". Jika "DAN" digunakan, maka secara logis, Anda tidak akan mendapatkan baris (kecuali jika barisnya seperti "MyVariable = False ... MyVariable = True".

Gunakan "extended grep" dan operator OR ( |).

grep -E 'MyVariable = False|MyVariable = True' FormA.frm
Arcege
sumber
1
Ya kau benar. Saya ingin ATAU tetapi tidak ditentukan secara spesifik DAN. Terima kasih.
CodeBlue
Kebetulan, saya perhatikan ini hanya bekerja dengan huruf "E" dan bukan huruf "e". Jadi argumen grep adalah case sensitif saya kira.
CodeBlue
1
@CodeBlue: Anda harus terbiasa dengan ini: hampir semuanya peka huruf besar-kecil di Unix
enzotib
Ok terima kasih @enzotib. Saya berasal dari latar belakang Windows.
CodeBlue
Ini juga berfungsi dengan egrep(yang saya gunakan) alih-alih grep -Eyang lebih kanonik.
Arcege
3

Kamu harus menggunakan

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

di mana \|urutan berarti alternatif, dan pembatas \(dan \)untuk pengelompokan.

enzotib
sumber
Yup, ini juga berfungsi, meskipun agak membingungkan bagi saya. Terima kasih.
CodeBlue
1

Anda cukup melakukannya

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

Untuk menjawab dengan cara lain dari apa yang telah dikatakan ...

Anda juga dapat menentukan beberapa kecocokan yang akan diambil, dengan menentukan -eopsi beberapa kali

% grep -e "MyVariable = True" -e "MyVariable = False" FormA.frm
 ... result1
 ... result2
Vince
sumber
Akan lebih baik jika Anda menulis jawaban Anda menggunakan teks dari pertanyaan daripada membuat contoh Anda sendiri.
G-Man Mengatakan 'Reinstate Monica'