我正在尝试构建 Perl 一行代码
与文件中的 IP 地址完全匹配,并打印匹配的 IP
如果 IP 不匹配则不会打印 IP 地址。
REMARK - IP地址左/右[left]xxx.xxx.xxx.xxx[right] - 可以是任何字符但IP本身必须完全匹配
问题是无论我在 echo 后面放什么,Perl 都会打印任何字符串
请指教我的语法有什么问题?
一些例子
# export IP=23.45.7.0
应该匹配IP
# echo 23.45.7.0 | perl -pe 'next if /^*#/;/(\b|\D)$ENV{IP}(\b|\D)/'
23.45.7.0
不应该匹配IP
# echo 123.45.7.0 | perl -pe 'next if /^ *#/; /(\b|\D)$ENV{IP}(\b|\D)/'
123.45.7.0
应该匹配IP
# echo IP23.45.7.0IP | perl -pe 'next if /^ *#/; /(\b|\D)$ENV{IP}(\b|\D)/'
IP23.45.7.0IP
不应该匹配IP
# echo 23.45.7.00 | perl -pe 'next if /^ *#/; /(\b|\D)$ENV{IP}(\b|\D)/'
23.45.7.00
最佳答案
要匹配常见模式,您可以查看 Regexp::Common在这种情况下,特别是 Regexp::Common::net
。
根据您的规范:
echo 10.11.12.13|perl -MRegexp::Common=net -nE '$_=~/^$RE{net}{IPv4}{-keep}$/ and say $1'
10.11.12.13
...鉴于此无效地址不匹配:
echo 10.11.1200.13|perl -MRegexp::Common=net -nE '$_=~/^$RE{net}{IPv4}{-keep}$/ and say $1'
关于linux - Perl 一行liner + 匹配IP地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14069544/