Nếu grep của bạn không hỗ trợ -P hoặc --perl-regexp và bạn có thể cài đặt grep hỗ trợ PCRE, ví dụ: "pcregrep", thì nó sẽ không cần bất kỳ tùy chọn dòng lệnh nào như GNU grep để chấp nhận Perl tương thích thông thường biểu thức, bạn chỉ cần chạy
pcregrep "Ui\.(?!Line)"
Bạn không cần một nhóm lồng nhau khác cho "Dòng" như trong ví dụ "Ui. (?! (Dòng))" - nhóm bên ngoài là đủ, như tôi đã trình bày ở trên.
Hãy để tôi cung cấp cho bạn một ví dụ khác về xác nhận phủ định: khi bạn có danh sách các dòng, được trả về bởi "ipset", mỗi dòng hiển thị số lượng gói ở giữa dòng và bạn không cần các dòng có 0 gói, bạn chỉ cần chạy:
ipset list | pcregrep "packets(?! 0 )"
Nếu bạn thích các biểu thức chính quy tương thích với perl và có perl nhưng không có pcregrep hoặc grep của bạn không hỗ trợ --perl-regexp, bạn có thể có các tập lệnh perl một dòng hoạt động giống như grep:
perl -e "while (<>) {if (/Ui\.(?!Lines)/){print;};}"
Perl chấp nhận stdin theo cách tương tự như grep, ví dụ:
ipset list | perl -e "while (<>) {if (/packets(?! 0 )/){print;};}"