title="<text>"
예를 들어 모든 변수를 grep하고 Linux의 HTML 파일 내에서 title="best-pencil"
와 같은 줄에 복사하고 싶습니다 .alt="best-pencil"
<p class="images"><img src="my-favorite-pencil.jpg" title="best-pencil">
에게:
<p class="images"><img src="my-favorite-pencil.jpg" title="best-pencil" alt="best-pencil">
을 사용하여 이 작업을 어떻게 수행할 수 있습니까 sed
?
답변1
문자열이 i) 항상 큰따옴표로 묶여 있고 절대 포함되지 않으며 "
ii) 항상 한 줄에만 있을 것이라고 확신할 수 있다면 이는 간단합니다.
$ sed -E 's/title=("[^"]*")/& alt=\1/' file
<p class="images"><img src="my-favorite-pencil.jpg" title="best-pencil" alt="best-pencil">
비결은 다음까지 title="
0 이상의 non- 을 찾아 이를 "캡처"하여(주변의 괄호가 수행하는 작업) 에서 기호 는 "일치하는 항목"을 의미합니다. , 여기서는 자체로 대체하고 그 뒤에 ."
"
("[^"]*")
\1
sed
&
title="foo"
alt="foo"
sed
을 지원하지 않는 버전이 있는 경우 -E
다음을 대신 사용할 수 있습니다.
$ sed 's/title=\("[^"]*"\)/& alt=\1/' file
<p class="images"><img src="my-favorite-pencil.jpg" title="best-pencil" alt="best-pencil">