首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Perl提取ip地址和端口号并进行比较

如何使用Perl提取ip地址和端口号并进行比较
EN

Stack Overflow用户
提问于 2011-09-05 01:05:44
回答 2查看 1.3K关注 0票数 1

我有一个在字符串中包含端口号和ip地址的文件。我必须提取ip地址,根据公式计算端口号,并将其与文件中的端口号进行比较,然后打印出不匹配的端口号。如果ip地址为W.X.Y.Z,则端口号的公式为50000+200(Y)+Z。文本文件的格式如下。

exchangeA_5=53413 ;239.189.17.13 7990

exchangeA_6=53415 ;239.189.17.15 7990

exchangeA_e=53470 ;239.189.27.70 7990

exchangeA_5=53468 ;239.189.27.68 7990

做这件事最好的方法是什么?

代码语言:javascript
复制
#!/usr/bin/perl
use strict;
use warnings;

open(my $fh, '<', 'fileC')
or die("Can't open fileC: $!\n");

while (<$fh>) {
    chomp;
    my ($key, $val) = split /=/;
    #print "$key\n";
    #print "$val\n";

    my ($port, $ip) = split /[;]/, $val;
    print "$port\n";
    print "$ip\n";

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-05 01:31:11

快速和肮脏:

代码语言:javascript
复制
perl -ne '($host, $port, @ip) = split /[=;.]/; print if $port != 50000+200*$ip[2]+$ip[3]' fileC

当然,您希望将其重写为一个很好的程序:)

保罗

票数 4
EN

Stack Overflow用户

发布于 2011-09-05 14:28:38

代码语言:javascript
复制
open(my $fh, '<', 'fileC.txt');
while (<$fh>) {
    chomp;
    if (!/^$/){
    ($Host,$port, @IP) =  split /[=;.]/;
    print "Host:$Host, IP:", (join '.',@IP),", and Port:$port\n";   
}}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7300808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档