%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%EC%83%81%EB%8C%80%20%EB%82%B4%EC%9A%A9%EC%9C%BC%EB%A1%9C%20%EB%B0%94%EA%BE%B8%EC%8B%AD%EC%8B%9C%EC%98%A4..png)
일반적으로 여러 파일의 문자열을 바꾸려면 다음을 사용하십시오.
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를 사용하고 ""
미리보기 캡처를 기반으로 이러한 큰따옴표 안에 필요한 문자열을 삽입합니다.