How to use awk variables in regular expressions?

前端 未结 5 1469
渐次进展
渐次进展 2020-12-03 09:52

I have a file called domain which contains some domains. For example:

google.com
facebook.com
...
yahoo.com

And I have ano

5条回答
  •  暖寄归人
    2020-12-03 10:34

    One way using an awk script:

    BEGIN {
        FS = "[. ]"
        OFS = "."
    }
    
    FNR == NR {
        domain[$1] = $0
        next
    }
    
    FNR < NR {
        if ($2 in domain) {
            for ( i = 2; i < NF; i++ ) {
                if ($i != "") {
                    line = (line ? line OFS : "") $i
                }
            }
            total[line] += $NF
            line = ""
        }
    }
    
    END {
        for (i in total) {
            printf "%s\t%s\n", i, total[i]
        }
    }
    

    Run like:

    awk -f script.awk domain.txt site.txt
    

    Results:

    facebook.com    37
    google.com  18
    

提交回复
热议问题