我有一个名为domain其中包含一些域。例如:
google.com
facebook.com
...
yahoo.com
我还有另一个文件叫site其中包含一些站点 URL 和编号。例如:
image.google.com 10
map.google.com 8
...
photo.facebook.com 22
game.facebook.com 15
..
现在我要计算每个域的 url 数量。例如:谷歌网站 has 10+8。所以我写了一个像这样的awk脚本:
BEGIN{
while(getline dom < "./domain" > 0) {
domain[dom]=0;
}
for(dom in domain) {
while(getline < "./site" > 0) {
if($1 ~/$dom$) #if $1 end with $dom {
domain[dom]+=$2;
}
}
}
}
但是代码if($1 ~/$dom$)
没有像我想要的那样运行。因为正则表达式中的变量$dom是按字面解释的。所以,第一个问题是:
有什么办法可以使用变量$dom
在正则表达式中?
然后,由于我是编写脚本的新手
有没有更好的方法来解决我遇到的问题?
awk
如果不使用则可以与变量匹配//
正则表达式标记。
if ( $0 ~ regex ){ print $0; }
在本例中,将所需的正则表达式构建为字符串
regex = dom"$"
然后与regex
多变的
if ( $1 ~ regex ) {
domain[dom]+=$2;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)