Como tornar o URL fora deste texto com menos recursos?

1

ENTRADA:

nyeeeeeeeeeeeeeee.txt:sadfsadf
sadjflsajfd:jasdlfjalsfd
foo/asdfsafd.txt:laksjdlfajsfd

OUTPUT:

<a href="nyeeeeeeeeeeeeeee.txt">nyeeeeeeeeeeeeeee.txt</a>:sadfsadf
<a href="sadjflsajfd">sadjflsajfd</a>:jasdlfjalsfd
<a href="foo/asdfsafd.txt">foo/asdfsafd.txt</a>:laksjdlfajsfd

Então eu preciso converter o INPUT para OUTPUT, a diferença é que o OUTPUT é "clicável" porque isso está em um arquivo HTML.

P: Como posso fazer isso com o awk, sed ou perl?

Eu sei que posso fazer uma "leitura linha por linha", mas qual é a maneira mais eficiente de fazer isso? (Eu só preciso de 1 solução, não para todos os sed / awk / etc). : é o delimitador.

    
por gasko peter 13.08.2013 / 13:14

1 resposta

5

Estritamente o que você pediu:

sed 's/\([^:]\+\)/<a href=""><\/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

Mas, para gerar HTML real, você também precisa cuidar da codificação HTML:

perl -MHTML::Entities -pe 's!([^:]+)(.*)!"<a href=\"".($t=encode_entities($1))."\">$t".encode_entities($2)!e' input.txt
    
por 13.08.2013 / 13:23

Tags