sed를 사용하여 선택한 단어를 복사하고 바꾸십시오.

sed를 사용하여 선택한 단어를 복사하고 바꾸십시오.

XML 데이터가 포함된 문서를 수정해야 하는데, 한 가지 수정 사항을 설정할 수 없습니다 sed.

다음 표현식을 수정해야 합니다.

<Bild href_fmt="Bilder/Bildschirmfoto%202012-06_fmt.jpeg" 
href="file:///user/folder/Desktop/Bildschirmfoto%202012-06-18%20um%2013.17.45.png"></Bild>

도착하다:

<a href="http://test.server.at/media/somefolder/Bildschirmfoto%202012-06_fmt.jpeg" 
target="_blank"><img src="http://test.server.at/media/somefolder/Bildschirmfoto%202012-06_fmt.jpeg" 
alt="" width="350" height="" /></a>

Bildschirmfoto%202012-06_fmt.jpeg내 문제: 올바른 새 항목을 생성하기 위해 복사할 수 없습니다 . HTML 태그가 줄 어딘가에 있어서 전체 줄을 복사할 수 없습니다...

sed다른 Linux 명령을 사용하여 이 작업을 수행하려면 어떻게 해야 합니까 ?

답변1

sed 's@.*href_fmt="[^/]*/\([^"]*\)".*@<a href="http://test.server.at/media/somefolder/\1target="_blank"><img src="http://test.server.at/media/somefolder/\1" alt="" width="350" height="" /></a>@'

내부의 이미지 이름을 추출해야 합니다 href_fmt="Bilder/Bildschirmfoto%202012-06_fmt.jpeg". 따라서 먼저 이에 대한 스키마를 작성해야 합니다.

.*href_fmt="[^/]*/\([^"]*\)".*

여기서 일치하기 전의 모든 것과 일치합니다 .*=) dir 이름과 일치하고 이미지 이름과 일치합니다. 그룹을 생성하고 나중에 이를 사용하여 줄의 나머지 부분과 일치시키기 위해 이제 다음 표현식을 기반으로 줄의 모든 것을 교체합니다.href_fmt="
href_fmt="href_fmt="[^/]*/Bilder/ \([^"]*\)\(\)\1".*

<a href="http://test.server.at/media/somefolder/\1target="_blank"><img src="http://test.server.at/media/somefolder/\1" alt="" width="350" height="" /></a>

\1위에서 언급한 이미지 이름과 동일합니다 .

이제 그것이 어떻게 작동하는지 분명해졌기를 바랍니다.

관련 정보