这是 awk 文件densel
#!/usr/local/bin/awk -f
BEGIN {
beg_ere = "^[[:space:]]*([#;!]+|@c|//)[[:space:]]+(HD) [()]([[:space:]]*).*$"
}
$0 ~ beg_ere { print "MATCH" }
当使用具有以下行的文件时,我没有打印 MATCH
## HD [opcon]
答案1
$ cat tst.awk
BEGIN {
#beg_ere = "^[[:space:]]*([#;!]+|@c|//)[[:space:]]+(HD) [()][[:space:]]*(.*)$"
beg_ere = "^[[:space:]]*([#;!]+|@c|//)[[:space:]]+HD [[][^]]*]"
}
$0 ~ beg_ere { print "MATCH" }
$ awk -f tst.awk file
MATCH
我把你原来的正则表达式留在那里,这样你就可以轻松地将它与工作正则表达式进行比较。您的主要问题是使用[()]
包含 和 的括号表达式(
,)
当您应该使用文字[
并]
围绕重复的括号表达式(例如 )时[^]]*
。它[[:space:]]*(.*)$
会匹配任何字符或不匹配任何字符,因此它没有做任何有用的事情,这就是我删除它的原因。周围(
也无所事事)
。HD