You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用grep/sed/awk提取含指定class的HTML article标签内容

原命令失效原因

你写的命令存在3处逻辑错误:

  1. 类名拼写错误:目标类名是双短横的article--nyheter,你写成了单短横的article-nyheter
  2. 匹配范围限制错误:正则开头的^强制要求内容出现在行首,你把所有换行替换为空格后整个页面是单行长文本,目标article标签并不在文本最开头,自然匹配不到
  3. 没有准确匹配闭合标签:原正则的.*会一直匹配到文本末尾,无法单独截取单个article标签的完整内容

可用实现方案

使用带Perl正则支持的grep即可完成需求,命令如下:

处理本地已保存的news.html文件

tr '\n' ' ' < news.html | grep -oP '<article[^>]*class="[^"]*article--nyheter[^"]*"[^>]*>.*?</article>'

直接拉取页面并提取内容(无需保存本地文件)

curl -s https://www.tv2.no/nyheter | tr '\n' ' ' | grep -oP '<article[^>]*class="[^"]*article--nyheter[^"]*"[^>]*>.*?</article>'

命令参数说明

  • tr '\n' ' ':将所有换行符替换为空格,避免标签被换行拆分导致匹配失败,和你原方案的处理逻辑一致
  • grep -P:开启Perl正则支持,可使用非贪婪匹配语法
  • grep -o:仅输出匹配到的片段,而非整个单行文本
  • 正则中.*?为非贪婪匹配,会匹配到最近的</article>闭合标签,避免把多个article的内容合并
  • 类名匹配部分写为[^"]*article--nyheter[^"]*,适配article标签存在多个类名、article--nyheter在任意位置的场景

内容的提问来源于stack exchange,提问作者mohsinali1317

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 02:45:02