sed를 사용하여 모든 HTML 태그를 제거하는 방법은 무엇입니까?

sed를 사용하여 모든 HTML 태그를 제거하는 방법은 무엇입니까?

정말 좋은 걸 찾았어요지도 시간몇 가지 실제 sed사례를 설명하세요.

마지막 항목(10번)은 다음과 같습니다.

$ sed -e 's/<[^>]*>//g'
This <b> is </b> an <i>example</i>.
This  is  an example.

누구든지 이 문제를 해결하도록 도와줄 수 있나요?

내 상황을 요약하면 다음과 같습니다. 1. 내가 이해한 것은 sed에게 "정규식을 정규식 2 s/x/y/g로 전역적으로 바꾸도록 지시하는 명령입니다 . 이 플래그는 다음 페이지에서 sed를 일종의 "대화형 모드"로 전환하는 것처럼 보입니다 .xy-eman

-e command
             Append the editing commands specified by the command argument to
             the list of commands.

"명령 목록" 이 제공되지 않는 것 같지만 sed오히려 "인수 목록"이 제공되는 것 같아서 확실하지 않기 때문에 이것은 나에게 혼란스러워 보입니다. 3. 첫 번째이자 유일한 것은 <단일 문자 정규 표현식에 지나지 않으며 <마지막 정규 표현식은 >단일 문자 정규 표현식에 불과하다는 것을 알고 있습니다. 4. sed가 sed에게 그 앞에 있는 패턴이 0개 이상 일치하도록 지시한다는 > 것을 알고 있습니다. *, 이 경우에는 괄호 안에 있습니다. 하지만 여기가 정말 혼란스럽습니다. 누군가 [^>]*나에게 더 많은 내용을 열어줄 수 있나요?

그래서 제가 정말 혼란스러워하는 점은 다음과 같습니다.

  • 평범한 영어로 무슨 일이 일어나고 있나요 -e?
  • 어떻게 진행되고 있나요 [^>]*?

감사해요:)

답변1

순서 s/<[^>]*>//g주문하다처리 엔진 에 sed"검색 및 교체"를 수행하라고 지시합니다. 즉 -e 's/..../g', "이 검색 및 바꾸기 명령을 sed.

하나의 명령으로 여러 명령을 실행하면 더 의미가 있을 수 있습니다.

sed -e '1d' -e '$d'

sed처리에 "첫 번째 행 삭제"와 "마지막 행 삭제"라는 두 가지 명령이 추가됩니다 .

[^>]"를 제외하고"를 의미하는 정규식 입니다 .>

따라서 [^>]*"를 제외한 모든 문자가 0개 이상 있음을 의미합니다.>

so 는 <[^>]*>a <, 선택적으로 뒤에 non- >, 그 뒤에 를 의미합니다 >.

그런 다음 이것을 시퀀스가 ​​어떤 것으로도 대체되지 않는 검색 및 바꾸기 명령에 넣습니다.그 다음에연속으로 여러 번 반복합니다(마지막 시간 g).

이는 문자열이 hello <abc> there <def>먼저 <abc>( <, 그 다음 abc"zero or more not >" , 그 다음 " >)과 일치하고 이를 null로 바꾼 다음 이 작업을 다시 실행함을 의미합니다 <def>. 결과는 다음과 같습니다 hello there.

(추가 공백은 제거되지 않으므로 주의하세요!)

답변2

범위를 두 지점으로 제한합니다.

  • 그 뒤에 편집 명령이 있음 을 알려줍니다 -e.sed

  • [^>]*0개 이상의 문자와 일치하는 패턴 입니다 .>특징

편집 명령은 말한다

's/<[^>]*>//g'

일치하는 콘텐츠 변경<, 첫 번째 문자까지 임의 개수의 문자가 옵니다.>도착하다아무것도 없다. 그리고 일치하는 횟수만큼 반복합니다.

관련 정보