我有这个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代码。我该如何解决?
答案 0 :(得分:4)
extension
似乎是一个关键字。只需将所有extension
替换为extension1
,例如:
extension1 = invalid_extension[int(rand()*5)];