awk 정규식은 모든 숫자를 ""로 바꾸지만 대괄호 사이의 숫자는 바꾸지 않습니다.

awk 정규식은 모든 숫자를 ""로 바꾸지만 대괄호 사이의 숫자는 바꾸지 않습니다.
  • 입력 디스플레이:(TJ)-8.5(o12)-3.2(p1)-15.3(ik)-1.2(1)

  • 결과는 다음과 같아야 합니다.(TJ)-.(o12)-.(p1)-.(ik)-.(1)

  • 괄호 안에 포함된 모든 숫자의 숫자는 대체되어서는 안 되지만, 모든 숫자의 다른 모든 숫자는 대체될 수 있습니다.

답변1

GNU 사용 awk:

gawk '{print gensub(/(\([^)]*\))|[0123456789]+/, "\\1", "g")}'

기본적으로 다음과 같이 번역됩니다 sed.

sed -E 's/(\([^)]*\))|[0123456789]+/\1/g'

답변2

다중 문자 RS에 GNU awk 사용:

$ echo '(TJ)-8.5(o12)-3.2(p1)-15.3(ik)-1.2(1)' |
    awk -v RS='[(][^)]+)' '{gsub(/[0-9]/,""); printf "%s%s", $0, RT}'
(TJ)-.(o12)-.(p1)-.(ik)-.(1)

관련 정보