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

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

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.


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

1

Anda cukup melakukannya

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

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

Akan lebih baik jika Anda menulis jawaban Anda menggunakan teks dari pertanyaan daripada membuat contoh Anda sendiri.
G-Man Mengatakan 'Reinstate Monica'
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.