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