我正在尝试编写一个日志剪贴板,它将添加指向文本的链接
例如,日志包含 -
<a href="https://website/browse/TK-######/">TK-######</a>
我想把所有的传统知识 - &#39;通过添加
将单词添加到链接中This is some text <a href="https://website/browse/TK-12354/">TK-12354</a> aasdgf asdf
adsf aasdf <a href="https://website/browse/TK-122/">TK-122</a> sadf sfdg sfdgsdfg
dghgf sfdg sdfg sdfg sdgf dsf <a href="https://website/browse/TK-1243/">TK-1243</a>
所以上面的文字看起来像这样 -
IFS=$'\n'
declare -a COMMENTS=($(cat /usr/local/statusTEST.dat | grep -n "TK-"))
for COMMENT in "${COMMENTS[@]}"
do
LINE=`echo $COMMENT | cut -d : -f 1`
TICKET=`echo $COMMENT | grep -o '\bTK-\w*'`
sed -i "${LINE}s/$TICKET/\<a href\=\"https\:\/\/website.com\/browse\/$TICKET\"\>$TICKET\<\/a\>/g" "/usr/local/statusTEST.dat"
done
我想出了一种在bash中实现它的方法,但它非常笨重,并且需要永远运行文件 -
sed -i "s/\bTK-/\<a href\=\"https\:\/\/website.com\/browse\/g"
我已经尝试使用sed来读取和更改整个文件,但是我无法通过将ref添加到url或者甚至能够将其添加到结尾来获得语法,即< / p>
{{1}}
有没有人有任何想法?
答案 0 :(得分:2)
您可以使用单个sed
命令:
sed 's~TK-[0-9]*~<a href="https://website/browse/&/">&</a>~g' file
This is some text <a href="https://website/browse/TK-12354/">TK-12354</a> aasdgf asdf
adsf aasdf <a href="https://website/browse/TK-122/">TK-122</a> sadf sfdg sfdgsdfg
dghgf sfdg sdfg sdfg sdgf dsf <a href="https://website/browse/TK-1243/">TK-1243</a>
&
是sed
~
中使用sed
作为正则表达式分隔符,以避免在替换文本中过度转义/
。根据以下评论:
如果我想忽略已经完成的条目
您可以将此sed
与2个与TK
字符串匹配的捕获组一起使用,只有前面有空格:
sed -E 's~(^|[[:blank:]])(TK-[0-9]+)~\1<a href="https://website/browse/\2/">\2</a>~g' file