2009-11-17 4 views
0

으로 내가복잡한 일괄 교체 리눅스

지금까지 내가 패턴을 찾을 상당히 복잡한 패턴/일부 일괄 교체 할 노력하고있어 :

find '(' -name '*.php' -o -name '*.html' ')' -exec grep -i -n 'hello' {} + 

내가 대체 할 문자열은 현재 다음과 같이 이미지의 경로가 있지만, 변화

<img src="/some/path/to/somewhere/hello" /> 

은 항상 마지막

에서 하위 문자열을 '안녕하세요'포함

<img src="<?php myfunction('(/some/path/to/somewhere/)'); ?>" /> 

는 어떤 좋은 방법이를 수행 할 것입니다 :

나는 경로를 잡고 다음과 같은 교체를 수행 하시겠습니까?

도움이 될 것입니다. .

답변

0

나오지도 좋아으로 backslahes와의 나오지 검색 및 교체 패턴

-exec cat '{}' | sed s/<img src="(/some/path/to/somewhere/)hello" />/<img src="<?php myfunction('(\1)(constant)'); ?>" />/ > /tmp/output; mv /tmp/output '{}' ';' 

탈출 공간 "및/기호 -exec grep ..... 교체 예를 들어

을,이 추출됩니다/경로/:

echo "<img src=\"/path/hello\"" | sed "s/<img\ src=\"\(\/path\/\)hello/\1/" 
+0

좋은 방법 인 것 같습니다. 언급 한대로 파일에서 파일로 변경됩니다. 따라서 고유 경로가 없습니다./some/path/to/somewh 일 수 있습니다. ere/or/here/path/to/someother/... – Mike

+0

echo " Dmitry

+0

한 줄에 두 개의 img 태그가있을 수 있기 때문에 *.?를 추천합니다. – Benj