如何通过bash从HTML文件中提取指定数量的匹配article标签节点
提取前N个匹配article节点的实现方案
方案1:修改原有sed命令(改动最小)
你可以直接在原有sed逻辑的基础上新增计数器功能,匹配到目标article起始标签时计数+1,计数超过你需要的数量时直接退出程序即可。
以提取前2个article为例,命令如下:
sed -n '/<article class.*article--nyheter/{p; :loop; n; /<\/article>/{p; x; s/^/1/; /^1\{2\}$/q; x; b}; p; b loop}' news2.html > top2Articles.html
你只需要修改命令中1\{2\}的数字2,替换为你要提取的前x个的数值即可,比如要提取前5个就改为1\{5\}。
方案2:awk实现(逻辑更易读)
如果需要经常调整提取数量,awk的计数逻辑更直观,修改成本更低:
awk ' /<article class.*article--nyheter/ {count++} count > 2 {exit} count >= 1 {print} ' news2.html > top2Articles.html
同样将上述代码中的数字2替换为你需要的x值即可。
注意事项
- 上述方案仅适用于无嵌套article标签的HTML结构,和你原有提取全量article的命令适用场景完全一致
- 如果HTML存在标签属性换行、格式不规范的情况,建议先格式化HTML文件再执行上述命令,避免匹配失败
内容的提问来源于stack exchange,提问作者mohsinali1317
相关产品推荐
相关产品推荐

