Shell - 来自变量的 grep/sed 子字符串

标签 shell sed find substring

我已经尝试让它工作 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/

相关文章:

linux - 如何在两个匹配模式之间但在第二个模式之前插入一条线

linux - PowerShell 脚本查找文件中的特定单词并在行开头添加 “4”

c++ - 反转字符串 find_first_not_of

来自管道的 Bash 输入

python - 在 Python 脚本中为 C++ 代码运行构建 (make)

json - 将多个文件与分隔符合并为一个文件

bash - 如何在 find 命令的 exec 参数中使用管道?

arrays - sh + 如何在 sh 中使用数组来打印数组中的所有值

linux - Kshell 读取文件并定义记录长度,然后从每条记录的末尾去除 ascii 20 个字符

linux - Linux下的数据包jpeg优化