我已经尝试让它工作 2 个小时了,但我还没有成功。 在 jenkins shell 命令中,我编写了以下内容:
full_HTML=$( curl http://website.com/ )
echo "$full_HTML" | sed -ne 's/<table class="pane" id="buildQueue">\(.*\)<\/table>.*/\1/'
所以我首先将网页的源存储在变量中。我想从该变量中提取以下标签:
<table class="pane" id="buildQueue">
...
...
...
</table>
有人可以建议我可能做错了什么吗?我已经研究它很久了,我担心我错过了一些非常简单的东西。
谢谢!
编辑1: 我没有得到任何输出。如果我从 sed 中删除 -n ,它会回显整个 $full_HTML 变量,其中包含相应网页的整个页面源。
此外,我在一台带有 sed --version = GNU sed version 4.1.5 的 Linux 机器上
编辑2: 请注意,整个页面源中只有一个表,但有多个表。
最佳答案
用grep找到解决方案:
full_HTML=$( curl http://website.com/ )
echo $full_HTML | grep -Po '\K<table class="pane" id="buildQueue">(.*?)<\/table>'
其中\K 部分删除相应表之前的所有内容,而 (.*?) 返回此特定标记之间的内容。
关于Shell - 来自变量的 grep/sed 子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28309323/