2010-11-23 4 views
3

나오지도 교체이URL 내가 HTML 파일에있는 모든 링크를 변경하려면

s/ <a[^>]* href="[^"]*\// <a href="\http:\/\/www.someurl.com\//g 

처럼 나오지도 사용하지만, 제대로 동작하지 않습니다.

내 링크 :

<a href="http://www.mylink.com/help/rss.php" target="_top" title="RSS">RSS</a></div> 

내 스크립트 변화는 내가 someurl.com에만 변경해야

을 someurl.com/help/rss.php하는 mylink.com/help/rss.php

+0

정규식은 예상대로 작동합니다. 결과가 어떻게 보이고 싶습니까? –

답변

0

\/으로 끝났습니다. 즉, 마지막 슬래시가됩니다. 후행 \/를 제거하고 작동합니다 :

$ echo ' <a href="http://www.mylink.com/help/rss.php" target="_top" title="RSS">RSS</a></div>' \ 
> | sed 's/ <a[^>]* href="[^"]*/ <a href="\http:\/\/www.someurl.com\//g' 
<a href="http://www.someurl.com/" target="_top" title="RSS">RSS</a></div> 

를 또는, (여전히 지금, 더 확실한 검색 패턴의 끝에서 /을 제거 포함) 구분 문자에 대한 데니스의 현명한 제안에 맞춰 편집 :

$ echo '<a href="http://www.mylink.com/help/rss.php" target="_top" title="RSS">RSS</a></div>' \ 
> | sed 's|<a[^>]* href="[^"]*|<a href="http://www.someurl.com/|g' 
<a href="http://www.someurl.com/" target="_top" title="RSS">RSS</a></div> 
6

첫 번째 슬래시 후 공간을 가지고는 sed가 읽기 쉽도록 다른 문자와 같은 |에 슬래시 및 URL이 슬래시의 모든 탈출 제거의 모든 변경합니다.

sed 's|<a[^>]* href="[^"]*/|<a href="http://www.someurl.com/|g' 
관련 문제