以下Perl示例是长Perl脚本的一部分.
此脚本从中获取结果ifconfig -a并打印IP地址.
有人可以解释如何$1获取IP地址吗?
而正则表达式是什么
$RESULTS =~ /addr:(\S+)\s+/
Run Code Online (Sandbox Code Playgroud)
手段?
my $COMMAND = "ifconfig -a | grep inet | grep -v 127.0.0.1 | head -1";
my $RESULTS = `$COMMAND`;
chomp $RESULTS;
# inet addr:106.13.4.9 Bcast:106.13.4.255 Mask:255.255.255.0
# inet 106.13.4.9 netmask ffffff80 broadcast 106.13.4.127
if ( $RESULTS =~ /addr:(\S+)\s+/ ) {
$IpAddress = $1;
}
elsif ( $RESULTS =~ /inet\s+(\S+)\s+/ ) {
$IpAddress = $1;
}
print "IpAddress = $IpAddress\n";
Run Code Online (Sandbox Code Playgroud)
如果=~匹配表达式为true,则特殊变量$1,, $2...将是与括号中的模式部分匹配的子字符串.$1匹配第一个左括号,$2第二个左括号,依此类推.
\S匹配任何非空白字符,
+匹配1次或更多次,
\s匹配任何空格字符(空格,制表符,换行符),
所以在你的正则表达式中它匹配addr:(any non-whitespace character 1 or more time)matches any whitespace character one or more time.并$1在捕获括号中的值.
请参阅此问题以了解$1:Perl中$ 1的含义是什么?
| 归档时间: |
|
| 查看次数: |
332 次 |
| 最近记录: |