假设我有一个如下所示的IP列表:
10.2.3.4
10.5.3.2
10.5.3.1
...
我知道regex中的'e'选项,它对替换字符串执行eval。我只是想直接替换,我可以这样做:
s/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/`{$1}dig -x $1 +short`/ge;
但是,我真正想做的是将主机名附加到正则表达式匹配,如下所示:
10.2.3.4 website.example.com
10.5.3.2 dc01.example.com
10.5.3.1 dc02.example.com
...
答案 0 :(得分:4)
如果你需要做的就是附加,你根本不需要正则表达式。只是做:
chomp($_ .= ' ' . qx(dig -x $_ +short)) for @list;
我不确定你的例子中{$1}
是什么。
答案 1 :(得分:1)
s/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/$1.`{$1}dig -x $1 +short`/ge;
答案 2 :(得分:1)
试试这个,它对我有用:
s/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/"$1 ". `dig -x $1 +short`/ge;