我有一个在字符串中包含端口号和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
做这件事最好的方法是什么?
#!/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";
}发布于 2011-09-05 01:31:11
快速和肮脏:
perl -ne '($host, $port, @ip) = split /[=;.]/; print if $port != 50000+200*$ip[2]+$ip[3]' fileC当然,您希望将其重写为一个很好的程序:)
保罗
发布于 2011-09-05 14:28:38
open(my $fh, '<', 'fileC.txt');
while (<$fh>) {
chomp;
if (!/^$/){
($Host,$port, @IP) = split /[=;.]/;
print "Host:$Host, IP:", (join '.',@IP),", and Port:$port\n";
}}https://stackoverflow.com/questions/7300808
复制相似问题