使用awk或sed卷曲URL中的部分

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用awk或sed卷曲URL中的部分相关的知识,希望对你有一定的参考价值。

我有一个来自curl命令的URL的一部分,如:

<span class="h2">Newest Version 2.1.4</span>

(结果更长,但这也应该这样做。我想要一个只留下的sed或awk语句

2.1.4

什么是最“动态”的方式呢?是否可以仅在“版本”一词之后过滤数字

答案

使用试试这个:

curl ...... |
xmllint --html --xpath '//span[@class="h2"]/text()' |
grep -oP 'Newest Version K.*'
另一答案

最“动态”的方式并非如此。您需要最强大和最灵活的方式。

xmlstarlet解决方案:

xmlstarlet sel -t -v 'substring(//span[@class="h2"]/text(), 16)' -n input.html

输出:

2.1.4

处理XML / HTML数据时始终使用XML / HTML解析器。

另一答案

您可以使用以下命令,该命令必须通过管道传递到将获取您的html文件的命令(curl或其他)

xmllint --html --xpath 'substring-after(//span[@class="h2"],"Newest Version ")' -

说明:

  1. --html激活HTML解析器模式
  2. --xpath来评估xpath表达式,这里的xpath表达式是:
  3. 'substring-after(//span[@class="h2"],"Newest Version ")'是用于从所有span元素中获取具有属性class="h2"的xpath表达式然后从该节点获取Newest Version之后的子字符串
  4. 最后但同样重要的是,最后使用-xmllintstdin上工作而不是从文件中工作是很重要的。

测试:

$ echo '<span class="h2">Newest Version 2.1.4</span>' | xmllint --html --xpath 'substring-after(//span[@class="h2"],"Newest Version ")' -
2.1.4

以上是关于使用awk或sed卷曲URL中的部分的主要内容,如果未能解决你的问题,请参考以下文章

匹配文件中的字符串并使用 sed 或 awk 打印整个值

用于搜索文本文件的一部分并打印它的通用命令(使用 awk 或 sed)

使用sed和awk进行文本处理

sed 或 awk:删除模式后面的 n 行

管道sed | awk 或 awk | sed

使用 sed 或 awk 预处理 C/C++ 代码时如何定位可靠的函数?