sed(또는 유용한 것)를 사용하여 문자열을 상대 내용으로 바꾸십시오.

sed(또는 유용한 것)를 사용하여 문자열을 상대 내용으로 바꾸십시오.

일반적으로 여러 파일의 문자열을 바꾸려면 다음을 사용하십시오.

sed -i 's/string1/string2/g' *

sed그러나 해당 명령(또는 실제로 작동하는 명령)을 사용하여 문자열을 관련 항목으로 바꾸는 방법 은 무엇입니까 ? 예를 들어:

<td><a href="">a</a></td>
<td><a href="">abbr</a></td>
<td><a href="">address</a></td>
<td><a href="">area</a></td>
...

위의 예를 사용하면,텍스트를 다음 결과로 바꾸려면 무엇을 사용할 수 있습니까?

<td><a href="HTML-EX/html/a.html">a</a></td>
<td><a href="HTML-EX/html/abbr.html">abbr</a></td>
<td><a href="HTML-EX/html/address.html">address</a></td>
<td><a href="HTML-EX/html/area.html">area</a></td>
...

""큰따옴표를 이와 관련된 여러 문자의 문자열로 바꿉니다.

답변1

다음 예가 도움이 될 것입니다.

sed 's#<a href="">\(.*\)</a>#<a href="HTML-EX/html/\1.html">\1</a>#'

먼저 변수로 표시되는 태그 사이의 텍스트를 캡처합니다 \1. 그런 다음 이 변수는 결과 문자열에 사용됩니다.

답변2

perl -i -pe 's|<a\hhref=\K "" (?=>([^<]+)</a>)|"HTML-EX/html/$1.html"|gx' *

Lookbehind 및 Lookahed를 사용하고 ""미리보기 캡처를 기반으로 이러한 큰따옴표 안에 필요한 문자열을 삽입합니다.

관련 정보