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

관련 정보