이것은 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