2011-12-21 2 views
5

sed를 사용하여 파일에있는 모든 문자 ('<')보다 작거나 ('>')보다 큰 문자를 찾으려고합니다. 단일 문자 만 일치 시키려합니다.sed/regex : 문자열에서 '<' or '>'을 일치시키는 방법

내 목표는 ' <''> '으로 대체하는 것입니다. 주위를 공백으로두면 더 쉽게 파싱 할 수 있습니다.

예를 들어,이 일치합니다 ..

<p>Hey this is a paragraph.</p><p>And here is another.</p> 

(태그 내 공백없이) 과로 돌려

<p> Hey this is a paragraph. </p> <p> And here is another. </p> 



(공백주의) 내 처음 (틀린) 추측은 다음과 같습니다.

sed 's/<{1}|>{1}/ <> /' ... 


원하지 않는 전체 단어/줄과 일치하며 올바르게 대체되지 않습니다.

어쨌든, 어떤 도움을 주시면 감사하겠습니다! 감사!

+1

당신은 정말 오래된 정규 표현식으로 HTML을 구문 분석하고 싶지 않아요. HTML 파서를 사용하십시오. (이유에 대한 가장 upvoted 답변 중 하나입니다 http://stackoverflow.com/a/1732454/ 참조) – geoffspear

+0

@ Woble : 나는 일반적으로 귀하의 주장에 동의하지만, 정규 표현식을 사용하여 여전히 테스트를위한 괜찮을 수 있고 같은 ... 만약 이것을 초과하면, 적절한 파서를 사용하십시오. – 0xC0000022L

+0

하하 그래, 알아. 나는 그것을 보았다. 필자는 매우 작은 태그 하위 집합을 위해 perl에서 장난감 학술 용 HTML 포맷터를 작성하고 있습니다. 나는 sed와 regex를 사용하여 펄 코드에 필요한 공백이 있는지 확인하려고한다. – jiman

답변

5

는 쉽게하기 위해 두 개의 대체를 시도 :

sed 's/</ </g ; s/>/> /g' file 
+1

니스. 고맙습니다. – jiman

+1

또는 이렇게 할 수 있습니다 -'sed -e 's//&/g'file' –

관련 문제