다음 패턴을 사용하여 리터럴 과 대괄호를 beg_ere
어떻게 사용할 수 있습니까 ?(asmb)
[
]
#!/usr/local/bin/awk -f
BEGIN {
beg_ere = "^[[:space:]]*([#;!]+|@c|//)[[:space:]]+(faml) [(asmb)]([[:space:]]*).*$"
}
$0 ~ beg_ere { print "MATCH" }
여기서 faml
및 asmb
는 사용자 정의 문자열이거나, 사용자 정의 문자열이 아닌 경우 설명입니다 "[[: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:]]*).*$"
# .....................................................^^^..............^^^