次のパターンを使用してリテラルと角括弧をどのように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:]]*).*$"
次の行を含むファイルを使用すると、MATCHは印刷されません。
## HD [opcon]
## HD [opcon] key
## HD [opcon] akey,bkey
カンマで区切られたキーは、必要な数だけ持つことができます。
答え1
バックスラッシュを使用してエスケープするだけです。
ただし、正規表現は二重引用符で囲まれた文字列なので、バックスラッシュをエスケープする必要があります。
beg_ere = "^[[:space:]]*([#;!]+|@c|//)[[:space:]]+(HD) \\[([[:graph:]]+)\\]([[:space:]]*).*$"
# .....................................................^^^..............^^^