한 쌍의 괄호 사이의 모든 것을 삭제하기 위해 하나의 라이너를 sed? 텍스트로 작업하고 있습니다. 괄호를 직접 삭제할 수

내가 원하지 않는 대괄호 [] 사이에있는 내용으로 가득 찬 일부 텍스트로 작업하고 있습니다. 괄호를 직접 삭제할 수 있으므로 하나의 라이너가 필요하지 않지만 그 사이의 모든 것을 제거하는 하나의 라이너가 필요합니다.

대괄호 대신 괄호 ()는 어떻습니까?



답변

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

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

참고 브래킷 식에서 것을 [^][]아무것도하지만 일치하는 []의이 ]먼저 와야. 일반적으로 a ]는 문자 세트를 종료하지만 세트의 첫 번째 문자 ( ^보완 문자 뒤 ) 인 경우 ]자체를 의미합니다.

중첩 된 대괄호를 구문 분석하거나 대괄호 텍스트가 여러 줄에 걸쳐있을 수있는 경우 sed가 올바른 도구가 아닙니다.