![sed를 사용하여 선택한 단어를 복사하고 바꾸십시오.](https://linux55.com/image/23522/sed%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%84%A0%ED%83%9D%ED%95%9C%20%EB%8B%A8%EC%96%B4%EB%A5%BC%20%EB%B3%B5%EC%82%AC%ED%95%98%EA%B3%A0%20%EB%B0%94%EA%BE%B8%EC%8B%AD%EC%8B%9C%EC%98%A4..png)
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
위에서 언급한 이미지 이름과 동일합니다 .
이제 그것이 어떻게 작동하는지 분명해졌기를 바랍니다.