쉘 스크립트에서 대괄호 제거

쉘 스크립트에서 대괄호 제거

대괄호 또는 대괄호와 그 사이의 텍스트를 제거하는 메커니즘을 만들고 싶습니다. 예를 들어:

앞으로:

text0 text1 text2 (text3 text4)

뒤쪽에:

text0 text1 text2 text3 text4

또는:

text0 text1 text2

이 두 가지 옵션과 다른 유형의 대괄호를 테스트하고 싶지만 Awk나 Sed 또는 다른 도구 중 어떤 도구를 사용해야 할지 잘 모르겠습니다. 어떤 제안이라도 감사하겠습니다.

답변1

텍스트를 보존하려면 이것으로 충분합니다.

tr -d '()'

텍스트와 괄호를 제거하려면:

sed 's/([^)]*)//g;s/  / /g'

텍스트에 중첩된 대괄호가 포함된 경우, 예를 들면 다음과 같습니다.

echo 'text0 (text1 (textA )) text2 (text3 text4) test5' |
  sed -e :A -e 's/([^()]*)//;tA' -e 's/  / /g'

답변2

질문의 나머지 절반은 대괄호를 제거하십시오 (그러나아니요사이에 텍스트가 있음):

echo 'text0 text1 text2 (text3 text4)' |
   sed 's/[()]//g'

산출:

text0 text1 text2 text3 text4

관련 정보