如何在BASH中捕获href链接

时间:2013-04-19 19:31:31

标签: linux string bash centos5

我有一个我正在使用的输出行,如下所示:

<a href="google.com">"test link"</a><br>

如何将没有引号的google.com捕获到变量中?鉴于网址可能包含许多'/',例如(随机组成下面的乱码)

http://www.google.com/search/something/lulz/here2;i=!mfo1iu489fn1o2jlk21m4098mdoi

编辑:在上述情况下,我想要整个网址字符串,而不仅仅是www.google.com。

注意:不希望加载第三方库等以执行此操作。

2 个答案:

答案 0 :(得分:3)

试试这个纯粹的bash正则表达式解决方案

shopt -s nocasematch    #Dont care about the character case
text='<a href="hTTtp://www.google.com/search/something/lulz/here2;i=!mfo1iu489fn1o2jlk21m4098mdoi">"test link"</a><br>'
regex='(<a\ +href=\")([^\"]+)(\">)'
[[ $text =~ $regex ]] && echo ${BASH_REMATCH[2]}

答案 1 :(得分:2)

shopt -s nocasematch

TEXT='<a href="http://www.google.com/search/something/lulz/here2;i=!mfo1iu489fn1o2jlk21m4098mdoi">"test link"</a><br>'

TEXT=${TEXT##*href=\"}
TEXT=${TEXT%%\"*}
TEXT=${TEXT##*//}
TEXT=${TEXT%%/*}

echo $TEXT