대괄호 사이의 그룹과 일치하는 awk gensub 정규 표현식

대괄호 사이의 그룹과 일치하는 awk gensub 정규 표현식
  • 레코드 입력에서 $0:
    -0.005 Tc 0.005 Tw [(T)-8.5(o)-3.2(p)-15.3(ik)]TJ
    
  • /1다음 주소로 출력해주세요 gensub:
    (T)-8.5(o)-3.2(p)-15.3(ik)
    

답변1

$ s='-0.005 Tc 0.005 Tw [(T)-8.5(o)-3.2(p)-15.3(ik)]TJ'

$ # if you want to delete []TJ
$ echo "$s" | awk '{print gensub(/\[([^]]+)]TJ/, "\\1", "g")}'
-0.005 Tc 0.005 Tw (T)-8.5(o)-3.2(p)-15.3(ik)

$ # if you just want the portion inside []TJ
$ echo "$s" | awk 'match($0, /\[([^]]+)]TJ/, a){s = a[1]; print s}'
(T)-8.5(o)-3.2(p)-15.3(ik)

GNU awkmatch캡처링 그룹을 쉽게 추출할 수 있도록 하는 메서드에 대한 세 번째 매개변수를 지원합니다 . 배열의 첫 번째 요소는 전체 일치 항목을 갖습니다. 두 번째 요소에는 첫 번째 그룹과 일치하는 부품이 포함되고, 세 번째 요소에는 두 번째 그룹과 일치하는 부품이 포함됩니다.

답변2

$ echo '-0.005 Tc 0.005 Tw [(T)-8.5(o)-3.2(p)-15.3(ik)]TJ' |
    awk '{print gensub(/.*\[([^]]+)]TJ/,"\\1",1)}'
(T)-8.5(o)-3.2(p)-15.3(ik)

regex101과 같은 사이트는 정규식 버전(BRE, ERE 또는 PCRE) 및/또는 특정 도구에서 사용되는 구분 기호를 충분히 고려하지 않기 때문에 명령줄 도구에서 사용할 정규식을 결정하는 데 사실상 쓸모가 없습니다. 도구가 역참조 및/또는 정규식의 텍스트 일치를 지원하는지 여부 및/또는 특정 도구의 특정 버전에 개인 확장이 있는지 여부 및/또는 도구에 정규식 표현식의 동작에 영향을 줄 수 있는 옵션이 있는지 여부

관련 정보