我想在bash脚本中从curl返回的网页中提取字符串值,但我不确定如何解决这个问题?
我感兴趣的值总是由curl返回,如下所示:
<head>
<title>UKIPVPN.COM FREE VPN Service</title>
<style type='text/css'>
#button {
width:180px;
height:60px;
font-family:verdana,arial,helvetica,sans-serif;
font-size:20px;
font-weight: bold;
}
</style>
</head>
<br>
<br>
<font color=blue><center> <h1>Welcome to Free UK IP VPN Service</h1> </center></font>
<form method='post' action='http://www.ukipvpn.com'>
<center><input type='hidden' name='sessionid' value='4b5q43mhhgl95nsa9v9lg8kac7'></center><br>
<center><input id='button' type='submit' value=' I AGREE ' /><br><br> <h2> Your TOS Let me use the Free VPN Service</h2></center>
</form>
<br><center><font size='2'>No illegal activities allowed. In case of abuse, users' VPN access log is subjected to expose to related authorities.</font></center>
</html>
我想在Bash中提取变量的值是value ='这是我感兴趣的值'。
感谢您的帮助;
安迪
答案 0 :(得分:1)
您可以尝试下面的内容。
$ val=$(curl somelink | grep -oP "name='sessionid'[^<>]*\bvalue\s*=\s*'\K[^']*")
答案 1 :(得分:1)
有some arguments against使用正则表达式来解析HTML。
这是使用tidy
和xmlstarlet
的基于XPath的更强大的版本:
var=$(curl someurl |
tidy -asxml 2> /dev/null |
xmlstarlet sel -t -v '//_:input[@name="sessionid"]/@value' 2> /dev/null);