如何用Bash脚本提取文本文件中重复HTML TH标签的内容
提取标签内的值到数组/变量的解决方案
下面提供几种简单高效的命令行方法,帮你把目标标签里的内容提取到bash数组或变量中:
方法1:grep + sed 组合提取
先筛选出目标行,再剥离HTML标签提取内容:
# 将提取到的值存入bash数组 values=($(grep '<th scope="col" class="text-center">' email_resp.txt | sed 's/.*<th scope="col" class="text-center">\(.*\)<\/th>.*/\1/'))
grep负责过滤出所有包含目标标签的行sed通过正则表达式捕获标签包裹的内容,把整行替换成捕获到的部分- 最终结果直接存入数组
values,后续可通过${values[0]}、${values[1]}...逐个访问
方法2:awk一步到位提取
利用awk的字段分隔功能,直接拆分标签并提取内容:
values=($(awk -F '<th scope="col" class="text-center">|</th>' '/<th scope="col" class="text-center">/{print $2}' email_resp.txt))
- 把的起始标签和结束标签设为分隔符
- 匹配到目标行时,打印第二个字段(也就是标签中间的内容)
- 结果同样存入数组
方法3:纯sed实现提取
用sed的匹配替换功能直接完成筛选和提取:
values=($(sed -n 's/.*<th scope="col" class="text-center">\(.*\)<\/th>.*/\1/p' email_resp.txt))
-n参数让sed只输出处理后的匹配行- 正则捕获标签内的内容,替换整行后打印结果
如何使用提取到的数组
遍历所有值:
for val in "${values[@]}"; do echo "提取到的值:$val" done
单独访问指定位置的值:
echo "第一个统计值:${values[0]}" echo "第二个统计值:${values[1]}"
内容的提问来源于stack exchange,提问作者Fadyboy
相关产品推荐
相关产品推荐

