awkでHD [何か]パターンマッチング

awkでHD [何か]パターンマッチング

これは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

関連情報