Ho un file denominato dominio che contiene alcuni domini. Per esempio:Come utilizzare le variabili di awk nelle espressioni regolari?
google.com
facebook.com
...
yahoo.com
E ho un altro file chiamato sito che contiene alcuni siti URL e numeri. Ad esempio:
image.google.com 10
map.google.com 8
...
photo.facebook.com 22
game.facebook.com 15
..
Ora ho intenzione di contare il numero di URL di ciascun dominio. Ad esempio: google.com ha 10 + 8. Così ho scritto uno script awk in questo modo:
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;
}
}
}
}
Ma il codice if($1 ~/$dom$)
non funziona come voglio. Perché la variabile $ dom nell'espressione regolare è stata spiegata letteralmente. Quindi, la prima domanda è:
Esiste un modo per utilizzare la variabile $dom
in un'espressione regolare?
Poi, come io sono nuovo alla scrittura di script
Esiste un modo migliore per risolvere il problema che ho?
Apropos tutti coloro che a parlare di come variabili non sono precedute con $, è meglio spiegare (IMO) come $ significa campo in awk, quindi $ dom vorrebbe dire campo qualunque sia il valore di dom. Le variabili in awk vengono utilizzate senza quotazioni e senza $. Non è shell! –