2011-11-03 2 views
1

Ive는 httrack과 함께 index.html을 많이 만들었습니다. 이제 sed와 동일한 2 개의 메타 태그를 삭제하려고합니다. 라는sed를 사용하여 html 메타 태그를 삭제하는 방법은 무엇입니까?

메타 태그 :

<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=UTF-8"><!-- /Added by HTTrack --> 

내가이 모든 인덱스 htmls 폴더에 recursiv 편집 할 수있는 솔루션입니다 생각합니다.

cd /home/user/websites 
grep -lr -e 'index' *.html | xargs sed -i 's/<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=UTF-8"><!-- /Added by HTTrack --> 
//g' 

는 doesent 작업은

+0

'sed '와 같은 유한 상태 도구가 HTML/XML과 같은 트리 구조의 데이터와 잘 맞지 않는다는 것을 알고 있습니까? –

+0

grep 문이 올바른 파일 이름을 출력합니까? sed 문이 단일 파일에서 작동합니까? 문제가 sed로 격리되면 질문을 간소화 할 수 있습니다. –

답변

2

이 시도 나에게 감사 도와주세요 : 당신이해야 을 수정하려는 파일이index를 포함 할 경우에만 그러나 작동

grep -lr -e 'index' *.html | xargs sed -i .bak -e 's#<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=UTF-8"><!-- /Added by HTTrack -->##g' 

. 현재 디렉토리 아래의 모든 index.html 파일을 수정할와 그 하위 디렉토리이 사용하는 경우 :

find . -name 'index.html' | xargs sed -i .bak -e 's#<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=UTF-8"><!-- /Added by HTTrack -->##g' 

어느 쪽이든을, 중요한 것은의 S 나오지 명령 #/를 교체했다. 이 명령을 사용하면 일관성이 유지되는 한 거의 모든 구분 기호를 사용할 수 있습니다 (예 : 세 문자가 모두 같은 문자 임). 표현식에 나타나지 않는 분리자를 선택해야합니다. 그렇지 않으면 분리자를 이스케이프 처리해야합니다.

또한 플래그를 sed로 수정했습니다. SED 사람이 페이지에서 :

-i extension 
     Edit files in-place, saving backups with the specified extension. If a zero-length extension is given, no backup will be saved. It is not recom- 
     mended to give a zero-length extension when in-place editing files, as you risk corruption or partial content in situations where disk space is 
     exhausted, etc. 

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

이 내 명령을 수정하기 전에 백업으로 모든 파일을 저장하고 백업 파일의 이름에 '박'을 추가된다는 것을 의미합니다. 백업에 다음과 같은 길이가 0 인 확장자를 전달하지 않으려면 : -i ''.

일반적으로 정규 표현식은 HTML을 구문 분석 할만큼 강력하지 않습니다. 여기서는 으로 고정 된 문자 시퀀스를 HTML로 바꾸기 때문에 작동합니다.

+1

좋은 제안. 다른 접근법은 슬래시를 벗어나는 것입니다.이 슬래시는 ... \\ \/\ /'... 원하는 것을 남깁니다. –

+0

대답에 대한 큰 감사, 좋은 소리 :) 나는 저녁에 그것을 시도합니다 .... 해피 :) –

관련 문제