リテラル[と]を含むパターン

リテラル[と]を含むパターン

次のパターンを使用してリテラルと角括弧をどのようにbeg_ere使用できますか?(asmb)[]

#!/usr/local/bin/awk -f
BEGIN {
  beg_ere = "^[[:space:]]*([#;!]+|@c|//)[[:space:]]+(faml) [(asmb)]([[:space:]]*).*$"
}

$0 ~ beg_ere { print "MATCH" }

ここでfamlasmbはカスタム文字列、またはカスタム文字列ではない場合の説明です"[[: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:]]*).*$"
  # .....................................................^^^..............^^^

関連情報