gpt4 book ai didi

linux - Perl 正则表达式和参数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:19:54 26 4
gpt4 key购买 nike

以下 Perl 示例是长 Perl 脚本的一部分。

此脚本从 ifconfig -a 获取结果并打印 IP 地址。

谁能解释一下 $1 是如何获取 IP 地址的?

还有什么正则表达式

$RESULTS =~ /addr:(\S+)\s+/

是什么意思?

  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";

最佳答案

如果 =~ 匹配表达式为真,特殊变量 $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:What does $1 mean in Perl?

关于linux - Perl 正则表达式和参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31266572/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com