Vấn đề Grep (khớp hai chuỗi trên cùng một dòng)


0

Ở đây tôi có một số lệnh grep không hoạt động chính xác:

cat file1.txt:
apples
Date: Sun, 24 Feb 2013 8:14:06 -0800
peaches melons
cherry sky cloud
green purple
yellow

cat file2.txt:
apples
Date
peaches melons 0800
cherry sky cloud
green purple
black

Bây giờ lệnh bị hỏng là:

egrep -lir "apples|melons|cherry" /home/test/* | xargs grep -l "Date" | xargs grep -l "0800"

Xem đối số đầu tiên: tệp phải chứa táo HOẶC dưa HOẶC cherry Sau đó, đối số thứ hai: cùng một tệp phải chứa "Ngày" và "0800" TRÊN LINE CÙNG

Vì vậy, file1.txt phải khớp nhưng không phải file2.txt - ngay bây giờ cả hai đều khớp

Cảm ơn sự giúp đỡ - Tôi nghĩ rằng tôi cần grep với regrec để khớp với lệnh "Ngày: [bất kỳ] [bất kỳ] [bất kỳ] 0800" để bắt "Ngày" và "0800" trên cùng một dòng ....


Thay vì đưa cho chúng tôi lệnh rất dài nhưng bị hỏng này, để chúng tôi đoán nó làm gì và khác với những gì bạn muốn, bạn có thể cho chúng tôi thay vào đó một ví dụ hoặc hai hiển thị đầu vào mẫu và đầu ra mong muốn không?
Nicole Hamilton

Câu trả lời:


3

Tôi nghĩ rằng đây là muốn bạn có nghĩa là. Ngày có 0 hoặc nhiều ký tự theo sau bởi 0800

egrep -lir "apples|melons|cherry" file*.txt | xargs grep -l  "Date.*0800"
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.