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

如何在Bash中从HTML文件提取黄色背景span内的URL路径?

解决方案:提取HTML中黄色背景Span内的URL路径并去重

当然可以帮你实现这个需求!下面提供两个基于Unix文本处理工具的shell脚本方案,运行./extra-path.sh urls-list.html就能得到你想要的去重结果。

方案一:使用grep + sed + sort + uniq(直观易懂)

创建名为extra-path.sh的脚本,内容如下:

#!/bin/bash

# 检查是否传入正确的文件参数
if [ $# -ne 1 ]; then
    echo "用法: $0 <HTML文件路径>"
    exit 1
fi

# 核心处理流程:提取、清洗、去重
grep -o '<span style='\''background-color:yellow'\''>.*<\/span>' "$1" | \
sed -E 's/<span style='\''background-color:yellow'\''>(.*)<\/span>/\1/' | \
sed -E 's/^>//' | \
sort | uniq

步骤解释:

  • grep -o:仅匹配并输出包含黄色背景样式的<span>标签及其内容
  • 第一个sed:从span标签中提取出中间的路径文本
  • 第二个sed:移除部分路径开头多余的>符号(对应你示例中的>/common/...格式)
  • sort | uniq:对提取的路径排序并去除重复项

方案二:使用awk(更简洁的单工具处理)

如果你更喜欢用awk来完成,这个脚本会更紧凑:

#!/bin/bash

# 参数检查
if [ $# -ne 1 ]; then
    echo "用法: $0 <HTML文件路径>"
    exit 1
fi

# 用awk提取、去重并排序
awk -F'<span style='\''background-color:yellow'\''>|<\/span>' '
    /background-color:yellow/ {
        # 移除开头的>符号
        gsub(/^>/, "", $2)
        # 用数组存储路径(自动去重)
        paths[$2]
    }
    END {
        # 遍历数组输出所有唯一路径
        for (p in paths) print p
    }' "$1" | sort

步骤解释:

  • 用-F设置字段分隔符为span的开始/结束标签,直接提取中间的路径内容
  • 用gsub清理路径开头的多余符号
  • 利用awk数组的键唯一性自动去重
  • 最后排序输出,保证结果有序

使用方法:

  1. 将上述任一脚本保存为extra-path.sh
  2. 给脚本添加执行权限:chmod +x extra-path.sh
  3. 运行脚本:./extra-path.sh urls-list.html

运行后你会得到和示例一致的去重结果:

/common/assets/locale/language_en.props
/common/assets/locale/language_en1.props
/common/assets/locale/language_en2.props
/main

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:56:37