한 쌍의 대괄호 사이에 있는 모든 내용을 삭제하려면 한 줄을 사용하시겠습니까?

한 쌍의 대괄호 사이에 있는 모든 내용을 삭제하려면 한 줄을 사용하시겠습니까?

저는 대괄호 [] 사이에 원하지 않는 내용으로 채워진 일부 텍스트를 작업하고 있습니다. 대괄호를 직접 제거할 수 있으므로 이 작업을 수행하는 데 한 줄의 코드가 필요하지 않지만, 그 사이의 모든 항목을 제거하려면 한 줄의 코드가 필요합니다.

대괄호 대신 괄호()를 사용하는 것은 어떻습니까?

답변1

[some text]빈 문자열로 대체됩니다 . 중첩된 괄호를 구문 분석하지 않으려는 경우 some text괄호를 포함할 수 없습니다.

sed -e 's/\[[^][]*\]//g'

대괄호 표현식에서 또는 이외의 항목 [^][]과 일치하려면 가 먼저 와야 합니다. 일반적으로 a는 문자 세트를 끝내지만, 문자 세트의 첫 번째 문자(여기서는 보완 문자 다음)인 경우 a는 그 자체를 나타냅니다.[]]]^]

중첩된 대괄호를 정말로 구문 분석하고 싶거나 대괄호 안의 텍스트가 여러 줄에 걸쳐 있을 수 있다면 sed는 올바른 도구가 아닙니다.

답변2

이 명령은 sed -e 's/([^()]*)//g'대괄호 대신 괄호를 실행합니다.

관련 정보