선택한 단어를 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위에서 언급한 이미지 이름과 같습니다.

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

관련 정보