如何在我的awk程序中修复这些错误

时间:2014-04-06 04:56:20

标签: bash awk

我有这个awk代码:

BEGIN {
valid_name[0] = "CEO"
valid_name[1] = "maffu"
valid_name[2] = "gerry"
valid_name[3] = "bob"
valid_name[4] = "cath"
valid_name[5] = "tom.tom.the.son.of.the.piper"
valid_name[6] = "Insuro_Corp"
valid_name[7] = "who-pays-the-piper"
valid_name[8] = "a_hat_at_a_party"
valid_name[9] = "do_dot_the_eyes"
valid_name[10]= "Kim_dot_COM"

valid_domain[0] = "InsuroCorp"
valid_domain[1] = "cs.otago"
valid_domain[2] = "gmail"
valid_domain[3] = "enron"
valid_domain[4] = "research.techies"
valid_domain[5] = "1st.national"

valid_extension[0] = "co.nz"
valid_extension[1] = "com.au"
valid_extension[2] = "co.uk"
valid_extension[3] = "co.us"
valid_extension[4] = "co.ca"
valid_extension[5] = "com"

valid_numeric[0] = "[139.80.81.50]"
valid_numeric[1] = "[127.0.0.0]"
valid_numeric[2] = "[139.80.32.68]"
valid_numeric[3] = "[255.255.25.255]"

invalid_name[0] = "-foo"
invalid_name[1] = "f--d"
invalid_name[2] = "_at_"
invalid_name[3] = "Top$"
invalid_name[4] = "tom/tom"
invalid_name[5] = ".com.au"
invalid_name[6] = "white space"
invalid_name[7] = "  white-space"

invalid_domain[0] = "Insuro-Corp"
invalid_domain[1] = "cs_otago"
invalid_domain[3] = "100%"
invalid_domain[4] = "AT&T"

invalid_extension[0] = "ac.nz"
invalid_extension[1] = "edu.au"
invalid_extension[2] = "tv"
invalid_extension[3] = "com.us"
invalid_extension[4] = "edu"

invalid_numeric[0] = "139.80.81.50"
invalid_numeric[1] = "[1..2]"
invalid_numeric[2] = "[139-80-81-50]"
invalid_numeric[3] = "[1][2][3]"
}

function generate_invalid_e_mail_address() {
at = rand() < 0.3 ? "_at_" : rand() < 0.1 ? "" : "@"
dot = dot = rand() < 0.3 ? "_dot_" : rand() < 0.1 ? "" : "."
if (rand() < 0.5) {
    name = valid_name[int(rand()*11)]
    if (rand() < 0.3) {
        numeric = invalid_numeric[int(rand()*4)]
        print name at numeric
    } else {
        if (rand() < 0.5) {
            domain = valid_domain[int(rand()*6)]
            extension = invalid_extension[int(rand()*5)]
        } else {
            domain = invalid_domain[int(rand()*5)]
            extension = valid_extension[int(rand()*6)]
        }
        print name at domain dot extension
    }
} else {
    name = invalid_name[int(rand()*8)]
    if (rand() < 0.3) {
        numeric = valid_numeric[int(rand()*4)]
        print name at numeric
    } else {
        domain = valid_domain[int(rand()*5)]
        extension = valid_extension[int(rand()*6)]
        print name at domain dot extension
    }
}
}

BEGIN {
print "maffu@cs.otago.ac.nz"
print "bob.gmail.com"
for (i = 0; i < 518; i++) generate_invalid_e_mail_address()
}

此程序应生成电子邮件地址测试用例并放入 它们位于名为“bad.data”的文件中。使用命令:

awk -f bad.awk >bad.data

因此,bad.data被创建为空文件 错误:

awk: bad.awk:70:                 extension = invalid_extension[int(rand()*5)]
awk: bad.awk:70:                           ^ syntax error
awk: bad.awk:73:                 extension = valid_extension[int(rand()*6)]
awk: bad.awk:73:                           ^ syntax error
awk: bad.awk:76:             print name at domain dot extension
awk: bad.awk:76:                                               ^ unexpected newline or end of string

awk: bad.awk:84:             extension = valid_extension[int(rand()*6)]
awk: bad.awk:84:                       ^ syntax error
awk: bad.awk:86:             print name at domain dot extension
awk: bad.awk:86:                                               ^ unexpected newline or end of string

这是我见过的第一个awk代码。我该如何解决?

1 个答案:

答案 0 :(得分:4)

extension似乎是一个关键字。只需将所有extension替换为extension1,例如:

extension1 = invalid_extension[int(rand()*5)];
相关问题