Làm thế nào để kết hợp hai câu lệnh grep và hiển thị kết quả của chúng với nhau?


8

Giả sử tôi làm

   grep "MyVariable = False" FormA.frm

   ... result1

   grep "MyVariable = True"  FormA.frm

   ... result2

Cách viết lệnh grep để tôi có thể nói gì đó như

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

Bạn muốn kiểm tra xem một dòng có chứa Var1 = FalseAND Var2 = Truekhông? Hoặc liệu một tập tin có chứa Var1 = FalseAND Var2 = True? Hay cái gì khác? Một ví dụ sẽ giúp.
Mikel

Tôi đã sử dụng VÀ do nhầm lẫn. Tôi có nghĩa là "HOẶC".
CodeBlue

Câu trả lời:


10

Những gì bạn thực sự muốn là "HOẶC", không phải "VÀ". Nếu "VÀ" được sử dụng, thì về mặt logic, bạn sẽ không nhận được dòng nào (trừ khi dòng đó là "MyVariable = false ... MyVariable = True".

Sử dụng "grep mở rộng" và toán tử OR ( |).

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

1
Vâng bạn đã đúng. Tôi muốn HOẶC nhưng chỉ định VÀ không chính xác. Cảm ơn.
CodeBlue

Tình cờ, tôi nhận thấy điều này chỉ hoạt động với chữ "E" chứ không phải chữ thường "e". Vì vậy, các đối số grep là trường hợp nhạy cảm, tôi cho rằng.
CodeBlue

1
@CodeBlue: bạn nên làm quen với điều này: hầu hết mọi thứ đều phân biệt chữ hoa chữ thường trong Unix
enzotib

Ok cảm ơn @enzotib. Tôi đến từ một nền tảng Windows.
CodeBlue

Nó cũng hoạt động với egrep(mà tôi sử dụng) thay vì grep -Eđó là kinh điển hơn.
Arcege

3

Bạn nên sử dụng

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

trong đó \|chuỗi có nghĩa là một sự thay thế, và các dấu phân cách \(\)dành cho nhóm.


Yup, điều này cũng hoạt động, mặc dù nó hơi khó hiểu với tôi. Cảm ơn.
CodeBlue

1

Bạn chỉ có thể làm

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

1

Trả lời theo cách khác với những gì đã được nói ...

Bạn cũng có thể chỉ định một số kết quả khớp với grep, bằng cách chỉ định -etùy chọn nhiều lần

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

Sẽ thật tuyệt nếu bạn viết câu trả lời của mình bằng cách sử dụng văn bản từ câu hỏi thay vì tạo ra ví dụ của riêng bạn.
G-Man nói 'Phục hồi Monica'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.