簡體   English   中英

在 Linux 中鏈接文本文件

[英]Linkify text file in Linux

我已經從文本文件中解析了所有包含 url 的行並附加了換行符,我想讓鏈接在新文件中點擊。

如何使用標准 linux 工具(最好是 awk)僅在 url 周圍附加<a href> -tags? 它需要在 cron 中實現自動化。

例如,

源文件chaturls.txt

    12:30 <user> check this: https://link.to/stuff.jpg</br>
    13:47 <user4> https://another.link.lol eyyyy</br>

新文件中的所需輸出, chatlinkified.html

12:30 <user> check this: <a href='https://link.to/stuff.jpg'>https://link.to/stuff.jpg</a></br>
13:47 <user4> <a href='https://another.link.lol'>https://another.link.lol</a> eyyyy</br>

我試過awk '{printf "<a href=\\"%s\\">%s</a><br>", $0,$0}' chaturls.txt > chatlinkified.html ,但這使整行awk '{printf "<a href=\\"%s\\">%s</a><br>", $0,$0}' chaturls.txt > chatlinkified.html (無效)可點擊的鏈接。

sed -E 's@(https?://[^[:space:]/$.?#].[^[:space:]<]*)@<a href="\1">\1</a>@g' chaturls.txt > chatlinkified.html

您可以使用 sed 並使用\\1引用匹配的組。 注意。 在這里,我使用 @ 而不是 / (如在 s/../../g 中)分開,您可以自由使用任何字符,這樣可以節省一些轉義。

用於查找 URL 的正則表達式對 https?:// 之后的第一個字符進行一些驗證檢查,然后繼續匹配,直到出現空格或另一個標簽的起始括號。

如果您想對 url 使用更簡單的正則表達式,如https?://[^ ]*)評論之一中給出的,您可以,其中不包括此小驗證。

您可以在此處找到更多經過驗證的 url 正則表達式: https : //mathiasbynens.be/demo/url-regex (但您必須從 PHP 正則表達式轉換為 sed 擴展正則表達式)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM