最小限のリソースでこのテキストからURLを生成するにはどうすればよいですか?

最小限のリソースでこのテキストからURLを生成するにはどうすればよいですか?

入力する:

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を使用してこれを行うにはどうすればよいですか?

私は「1行ずつ読む」ことができることを知っていますが、これを行う最もリソース効率的な方法は何ですか? (すべてのsed / awk /などではない1つの解決策のみが必要です)は:区切り文字です。

ベストアンサー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

おすすめ記事