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.