2012-04-17 40 views
21

Tôi đang cố gắng tự động xóa tất cả các dòng khỏi tệp văn bản có chứa chữ "T" không được theo sau là "H". Tôi đã sử dụng grep và gửi đầu ra cho một tập tin khác, nhưng tôi không thể đến với regex ma thuật sẽ giúp tôi làm điều này.Grep Regex: Liệt kê tất cả các dòng trừ

Tôi không ngại sử dụng awk, sed hoặc một số công cụ Linux khác nếu grep không phải là công cụ thích hợp để sử dụng.

Trả lời

51

Điều đó sẽ làm điều đó:

grep -v 'T[^H]' 

-v: dòng in không phù hợp với

[^ H]:. Phù hợp với bất kỳ ký tự nhưng H

+2

Cả hai trường hợp của '*' là không cần thiết , như grep quét toàn bộ các dòng tìm kiếm một kết quả phù hợp –

+0

Cảm ơn bạn đã nhận xét. Chỉnh sửa để phản ánh điều này. – byrondrossos

9

Bạn có thể làm:

grep -v 'T[^H]' input 

-v là lựa chọn phù hợp với nghịch đảo của grep nó không liệt kê các dòng phù hợp với mô hình.

Regex được sử dụng là T[^H] khớp với bất kỳ dòng nào dưới dạng T được theo sau bởi bất kỳ ký tự nào khác ngoài H.

Các vấn đề liên quan