Как использовать переменные awk в регулярных выражениях?

У меня есть файл с именем домен , который содержит несколько доменов. Например:

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-адреса каждого домена. Например:google.com имеет 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в регулярном выражении?

Затем, поскольку я новичок в написании сценария

Есть ли лучший способ решить мою проблему?

25
задан dda 18 July 2012 в 04:17
поделиться