获取最后一个段IP地址

时间:2014-08-01 09:48:50

标签: regex bash perl

在Bash中,我可以通过

获取IP地址的最后一段
$ A="10.10.10.46"
$ echo ${A##*.}
46

在Perl中可以轻松完成类似的事情吗?

5 个答案:

答案 0 :(得分:3)

您可以通过将数字匹配到字符串的末尾来获取最后一个八位字节,

my $A = "10.10.10.46";
print $1 if $A =~ /([0-9]+)$/;

或通过拆分点字符并选择最后一个列表元素

my $num = ( split /[.]/, $A )[-1];

答案 1 :(得分:2)

Perl:

my $a = "10.10.10.46";
print $1 if $a =~ /\.(\d{1,3})$/;

此正则表达式将匹配最后的1到3位数字,并确保它们前面有一个点。

答案 2 :(得分:1)

在perl中使用substr

my $str1 = "10.10.10.46";
$out1 = substr($str1, -2);

现在假设您有两位数以上;

获取最后一个点之后的所有内容

(?<=\.)\d+$

答案 3 :(得分:0)

例如,您可以在perl

中使用此功能
my $A="10.10.10.46";
my @d = split(/\./, $A);
print $d[-1];

这将始终打印基于.的最后一个元素作为分隔符。它会根据.将字符串切片,然后打印后续数组的最后一个元素。

答案 4 :(得分:0)

你想要字符串末尾的所有数字,所以要求它。

($n) = $ip =~ /(\d+)$/;