2014-11-11 2 views
0

좋아, 포기합니다. 나는 수천 html 파일에서 잘못된 형식의 도메인 이름을 대체하기 위해 sed를 얻으려고 몇 시간 동안 노력했지만 슬래시 (및 가능한 경우 점/콜론)를 이스케이프 처리하는 것처럼 보이지 않습니다.많은 HTML 파일에서 SED를 사용하여 도메인 이름 바꾸기

텍스트 찾을 수 있습니다 : http://www.domain.com/http

을 교체 : 내가 시도 무엇 HTTP

:

sed -i 's/http:\/\/www.domain.com\/http/http/' 
sed -i 's/http\\:\\/\\/www\\.domain\\.com\\/http/http/' 
sed -i 's/http\:\/\/www\.domain\.com\/http/http/' 
sed -i 's=http://www.domain.com/http=http=' 

UPDATE :

그것이 나올 때 나는 귀신을 쫓고 있었다. 자바 스크립트의 일부는 내 모든 img 태그의 시작 부분에 http://www.domain.com/을 추가하고있었습니다! 불행히도 이제 모든 페이지에서이 기능을 제거해야합니다. 그래서 그 대신 위의, 지금에 찾고 : http://www.domain.com/ '+ IMG [0]이와

: '+ IMG [0]

I

이 교체 다음을 시도해 보지 않았습니다.

find . -name "*.html" -type f -exec sed -i 's|http://www\.domain\.com/\'+img\[0\]|\'+img\[0\]|g' {} \; 
find . -name "*.html" -type f -exec sed -i 's|http://www\.domain\.com/\'+img[0]|\'+img[0]|g' {} \; 

특정 문자를 다시 이스케이프 처리하는 것으로 보입니다. 위의 명령 중 하나를 실행하려고 할 때만이 명령을 내리면 프롬프트가 표시됩니다.

+0

빠른 업데이트를 원하시면 – James

답변

2

다른 구분 기호를 사용하여 이스케이프 처리를 피할 수 있습니다. 점 .은 이스케이프해야하는 특수한 의미의 유일한 문자이며 문자 그대로 일치시킬 수있는 모든 문자입니다. 또한 패턴에 전역 수정자를 사용하십시오.

sed -i 's|http://www\.domain\.com/http|http|g' 

편집 — 당신은 다른 부품을 교체하려면 다음을 사용할 수 있습니다.

sed -i "s|http://www\.domain\.com/\('[+]img\[0\]\)|\1|g" 
+0

Thx로 알려 주시면 감사하겠습니다. 내가 입력 할 때 이것을 테스트하십시오. – James

+0

모든 도움을 주셔서 다시 한번 감사드립니다. JS가 내가 제거하려고했던 도메인 부분을 추가하면서 내가 첫 요청으로 유령을 쫓고있는 것 같습니다. 원래 질문을 업데이트했습니다. – James

+0

@jamesnapier 질문에 따라 업데이트했습니다. – hwnd

관련 문제