2011-01-25 33 views
9

tôi muốn perl để làm một one-liner như grepperl một lớp lót như grep?

một chút như thế này, nhưng tôi không chắc chắn những gì để thêm vào làm cho nó hoạt

$ (echo a ; echo b ; echo c) | perl -e 'a' 

THÊM câu trả lời của tôi ở đây bìa và nhiều hơn nữa
https://superuser.com/questions/416419/perl-for-matching-with-regex-in-terminal

+0

liên quan: http://stackoverflow.com/questions/3848360/how-can-i-implement -unix-grep-in-perl – codaddict

+0

Trừ khi bạn đang ở trên một số cực kỳ bị khóa xuống Linux nơi 'grep' không có sẵn, nó có thể tốt hơn để chỉ sử dụng' grep' :-) – paxdiablo

+0

Xem thêm [perlrun] (http: //perldoc.perl.org/perlrun.html) manpage. –

Trả lời

23
(echo a; echo b; echo c) | perl -ne 'print if /a/' 
2

bạn có thể làm tương tự với Ruby, nếu bạn có thể đủ khả năng lựa chọn khác

$ (echo a; echo b; echo c) | ruby -ne 'print if /a/' 
a 
$ (echo a; echo b; echo c) | ruby -ne 'print if $_["a"]' 
a 
+1

Cảm ơn gợi ý. Tôi đang tìm kiếm một cái gì đó cho vỏ một lớp lót - Python là cách quá clunky, thậm chí Py2. Điều tốt cần biết, Ruby theo sau cha của nó Perl ở đây. –

5

Để vang bình luận đám đông của:

Nếu bạn muốn sử dụng Perl regexes thử ack: http://betterthangrep.com/

+0

làm thế nào về perl? – barlop

+2

ack là perl, nhưng gói gọn tất cả đẹp một –

+0

@barlop Đó là sự khác biệt giữa 'ack '^ \ S + foo \ s'' và' perl -wlne' m {^ \ S + foo \ s} và in ' '- vì vậy khoảng ~ 20 ký tự được lưu mỗi khi tôi sử dụng ack thay vì perl cho mục đích này. Ngoài ra khi Perl hiển thị các kết quả, nó không sử dụng bất kỳ màu nào trong khi ack sẽ điều chỉnh màu đầu ra tương tự như grep. –

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