2010-07-11 36 views
5

Làm cách nào để chỉ trích xuất địa chỉ IP từ tệp văn bản có địa chỉ IP trên mỗi dòng? Tôi muốn trích xuất các IP và sau đó liệt kê các địa chỉ IP trong một tệp riêng biệt. Tệp văn bản chứa IP có định dạng sau:Làm thế nào để trích xuất địa chỉ IP từ một tập tin văn bản bằng Perl?

Lưu trữ somehost.com (192.168.1.1) tăng (độ trễ 0,20 giây).
Máy chủ 10.1.0.0 tăng (độ trễ 0.21 giây).
Máy chủ 172.1.0.0 hoạt động (độ trễ 0.21 giây).


Tôi đang cố gắng để có được các tập tin văn bản kết quả đầu ra như sau:

192.168.1.1
10.1.0.0
172.1.0.0

cách tốt nhất là gì để làm điều này bằng Perl?

Lưu ý: Nó không yêu cầu cụm từ thông dụng chiếm tài khoản IP hợp lệ ... chỉ IP ở định dạng trên sẽ thực hiện.

Cảm ơn!

Trả lời

15
use Regexp::Common qw/net/; 
while (<>) { 
    print $1, "\n" if /($RE{net}{IPv4})/; 
} 
1

while(<>) 
{ 
    print "$1\n" if /\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\b/; 
} 
+2

Điều đó sẽ phù hợp với tất cả các loại điều mà không phải là địa chỉ IP hợp lệ. Regexp :: Common :: net là tốt hơn nhiều. http://search.cpan.org/~abigail/Regexp-Common/lib/Regexp/Common/net.pm – friedo

+2

OP đặc biệt nói rằng anh không quan tâm liệu chúng có phải là địa chỉ IP hợp lệ hay không. "Tất cả mọi thứ" nghĩa là gì? Điều này phù hợp với 4 bộ chữ số được phân cách bằng dấu chấm, dường như với tôi là một đặc tính công bằng về những gì anh đang tìm kiếm. –

+6

Thao tác này sẽ không hoạt động nếu địa chỉ IP ở đầu hoặc cuối dòng. –

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