Thực hiện thoát khỏi tìm kiếm regex perl với thất bại nếu không tìm thấy


1

Với grep Tôi nhận được một mã trả lại thất bại / trạng thái thoát nếu không tìm thấy kết quả.

Làm thế nào tôi có thể làm điều tương tự với perl?

Về cơ bản, tôi muốn thay đổi các mục sau để nó thoát với trạng thái 1 nếu không tìm thấy kết quả khớp.

echo foo | perl -nle'print if m{bar}'

Câu trả lời:


1

Nhanh chóng và hèn hạ:

echo foo | perl -nlE'print if $t ||= m{bar} }{ exit 1 if !$t'

Giải trình:

"Nụ hôn Eskimo" ™ }{ đóng cửa while vòng lặp (được ngụ ý bởi -n ). bên trong if báo cáo một biến $t1 ngay khi trận đấu đầu tiên xảy ra.


0

Nếu tôi là để giải quyết vấn đề "nhanh & amp; bẩn", tôi chỉ đơn giản sẽ thử một cái gì đó như thế này

tiếng vang foo | perl -nle 'in nếu m {bar} hoặc in 1'

Hy vọng điều này là hữu ích.


1
Nó in "1", nhưng không thoát với trạng thái 1 / thất bại.
hpique

1
bạn có thể thay thế in 1 bằng die 1 (đối với thất bại; nên hủy bỏ tập lệnh) hoặc exit 1 (trả về trạng thái 1, nhưng không ném lỗi) nếu bạn muốn. perldoc.perl.org/fifts/exit.html
Frank Thomas

Chào. Giống như Frank đã nói, chết hoặc thoát sẽ trở lại 1 hoặc thất bại.
Eamonn Travers
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.