![최소한의 리소스로 이 텍스트에서 URL을 생성하려면 어떻게 해야 합니까?](https://linux55.com/image/49294/%EC%B5%9C%EC%86%8C%ED%95%9C%EC%9D%98%20%EB%A6%AC%EC%86%8C%EC%8A%A4%EB%A1%9C%20%EC%9D%B4%20%ED%85%8D%EC%8A%A4%ED%8A%B8%EC%97%90%EC%84%9C%20URL%EC%9D%84%20%EC%83%9D%EC%84%B1%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
입력하다:
nyeeeeeeeeeeeeeee.txt:sadfsadf
sadjflsajfd:jasdlfjalsfd
foo/asdfsafd.txt:laksjdlfajsfd
산출:
<a href="nyeeeeeeeeeeeeeee.txt">nyeeeeeeeeeeeeeee.txt</a>:sadfsadf
<a href="sadjflsajfd">sadjflsajfd</a>:jasdlfjalsfd
<a href="foo/asdfsafd.txt">foo/asdfsafd.txt</a>:laksjdlfajsfd
따라서 INPUT을 OUTPUT으로 변환해야 합니다. 차이점은 OUTPUT이 HTML 파일에 있기 때문에 "클릭 가능"하다는 것입니다.
묻다:awk, sed 또는 Perl을 사용하여 이를 어떻게 수행합니까?
나는 "한 줄씩 읽을" 수 있다는 것을 알고 있지만 이를 수행하는 가장 자원 효율적인 방법은 무엇입니까? (모든 sed/awk/ 등이 아닌 하나의 솔루션만 필요함)은 :
구분 기호입니다.
답변1
요구 사항을 엄격히 따르십시오.
sed 's/\([^:]\+\)/<a href="\1">\1<\/a>/' input.txt
awk -F ':' -vOFS=':' '$1="<a href=\""$1"\">"$1"</a>"' input.txt
while IFS=':' read -r url text; do echo "<a href=\"$url\">$url</a>:$text"; done < input.txt
그러나 실제 HTML 생성을 위해서는 HTML 인코딩도 처리해야 합니다.
perl -MHTML::Entities -pe 's!([^:]+)(.*)!"<a href=\"".($t=encode_entities($1))."\">$t".encode_entities($2)!e' input.txt