使用下面的beg_ere模式,如何将(asmb)包含在文字[和]中?
#!/usr/local/bin/awk -f
BEGIN {
beg_ere = "^[[:space:]]*([#;!]+|@c|//)[[:space:]]+(faml) [(asmb)]([[:space:]]*).*$"
}
$0 ~ beg_ere { print "MATCH" }其中faml和asmb是用户定义的字符串,如果不是用户定义的字符串,则由"[[:graph:]]+"描述。
在这种情况下
beg_ere = "^[[:space:]]*([#;!]+|@c|//)[[:space:]]+(faml) [([[:graph:]]+)]([[:space:]]*).*$"当使用带有以下行的文件时,将不会打印匹配
## HD [opcon]
## HD [opcon] key
## HD [opcon] akey,bkey 可以用逗号分隔任意数量的键。
发布于 2023-02-24 18:26:06
你只需要用反斜杠逃离他们。
但是,由于regex位于双引号字符串中,因此反斜杠需要转义。
beg_ere = "^[[:space:]]*([#;!]+|@c|//)[[:space:]]+(HD) \\[([[:graph:]]+)\\]([[:space:]]*).*$"
# .....................................................^^^..............^^^https://unix.stackexchange.com/questions/736784
复制相似问题