Ich habe eine Datei namens Domäne, die einige Domänen enthält. Zum Beispiel:Wie verwendet man awk-Variablen in regulären Ausdrücken?
google.com
facebook.com
...
yahoo.com
Und ich habe eine andere Datei Website genannt, die einige Websites, URLs und Zahlen enthält. Zum Beispiel:
image.google.com 10
map.google.com 8
...
photo.facebook.com 22
game.facebook.com 15
..
Jetzt werde ich die URL-Nummer jeder Domäne zählen. Zum Beispiel: google.com hat 10 + 8. Also schrieb ich ein awk-Skript wie folgt aus:
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;
}
}
}
}
Aber der Code if($1 ~/$dom$)
läuft nicht wie ich will. Weil die Variable $ dom im regulären Ausdruck wörtlich erklärt wurde. Also, die erste Frage lautet:
Gibt es eine Möglichkeit, Variable $dom
in einem regulären Ausdruck zu verwenden?
Dann, als ich
zu schreiben Skript neu binGibt es einen besseren Weg, um das Problem, das ich habe zu lösen?
propos alle reden, wie Variablen nicht Präfix mit $, es ist besser erklärt (IMO) als $ bedeutet Feld in awk, so $ dom würde Feld bedeuten, was auch immer der Wert von dom ist. Variablen in awk werden ohne Anführungszeichen und ohne $ verwendet. Es ist keine Shell! –