내가 원하지 않는 대괄호 [] 사이에있는 내용으로 가득 찬 일부 텍스트로 작업하고 있습니다. 괄호를 직접 삭제할 수 있으므로 하나의 라이너가 필요하지 않지만 그 사이의 모든 것을 제거하는 하나의 라이너가 필요합니다.
대괄호 대신 괄호 ()는 어떻습니까?
내가 원하지 않는 대괄호 [] 사이에있는 내용으로 가득 찬 일부 텍스트로 작업하고 있습니다. 괄호를 직접 삭제할 수 있으므로 하나의 라이너가 필요하지 않지만 그 사이의 모든 것을 제거하는 하나의 라이너가 필요합니다.
대괄호 대신 괄호 ()는 어떻습니까?
답변:
[some text]
빈 문자열로 교체하십시오 . 중첩 된 대괄호를 구문 분석하지 않으려 some text
는 경우 대괄호를 포함 할 수 없습니다.
sed -e 's/\[[^][]*\]//g'
참고 브래킷 식에서 것을 [^][]
아무것도하지만 일치하는 [
나 ]
의이 ]
먼저 와야. 일반적으로 a ]
는 문자 세트를 종료하지만 세트의 첫 번째 문자 ( ^
보완 문자 뒤 ) 인 경우 ]
자체를 의미합니다.
중첩 된 대괄호를 구문 분석하거나 대괄호 텍스트가 여러 줄에 걸쳐있을 수있는 경우 sed가 올바른 도구가 아닙니다.
s/\[[^\[\]]*\]//g
(즉, 문자 집합의 멤버를 이스케이프하기 위해 백 슬래시 사용).
[…]
= 문자 세트. ^
첫 번째 문자는 세트를 보완한다는 의미입니다. ]
일반적으로 세트의 끝을 표시하지만, 이외의 첫 번째 문자 인 ^
경우 일반 문자입니다. 빈 세트 또는 빈 세트의 보완은 허용되지 않습니다. 그런 다음 [
평범하고 ]
세트를 끝냅니다.
이 명령 sed -e 's/([^()]*)//g'
은 대괄호 대신 괄호를 사용합니다.