Bash 检索网页的特定部分

Bash 检索网页的特定部分,bash,list,dynamically-generated,Bash,List,Dynamically Generated,我需要用从网页的一部分检索到的数据填充BASH脚本中的列表。目前,我已经手动创建了一个静态列表,但我希望动态生成列表内容。这样,如果将新项目添加到页面中,脚本的后续运行将反映这些新项目 源页面: 我想摘录标题为“macOS、iOS和tvOS”的部分,最后列出如下列表: updateServers="appldnld.apple.com 80 gg.apple.com 80 gg.apple.com 443 gnf-mdn.apple.com 443 gnf-mr.apple.c

我需要用从网页的一部分检索到的数据填充BASH脚本中的列表。目前,我已经手动创建了一个静态列表,但我希望动态生成列表内容。这样,如果将新项目添加到页面中,脚本的后续运行将反映这些新项目

源页面:

我想摘录标题为“macOS、iOS和tvOS”的部分,最后列出如下列表:

updateServers="appldnld.apple.com 80  
gg.apple.com 80   
gg.apple.com 443  
gnf-mdn.apple.com 443  
gnf-mr.apple.com 443  
gs.apple.com 80  
gs.apple.com 443  
ig.apple.com 443  
mesu.apple.com 80  
mesu.apple.com 443  
ns.itunes.apple.com 443  
oscdn.apple.com 80  
oscdn.apple.com 443  
osrecovery.apple.com 80  
osrecovery.apple.com 443  
skl.apple.com 443  
swcdn.apple.com 80  
swdist.apple.com 443  
swdownload.apple.com 80  
swdownload.apple.com 443  
swpost.apple.com 80  
swscan.apple.com 443  
updates-http.cdn-apple.com 80  
updates.cdn-apple.com 443  
xp.apple.com 443"  
最后,我希望将页面的每个部分输出到自己的单独列表中,但目前我主要关心的是上面的部分


提前谢谢大家。这是一个很棒的社区。

HTML解析器对于此类任务(例如Ruby的Nokogiri或Python的Beautifulsoup)是一个更好的工具。对于纯Bash解决方案,您可以使用此脚本(假设
-P
支持grep):


我的输出与你的不匹配,我正在使用macOS。我收到以下
grep:invalid option--z用法:grep[-abcdefghhiijllmnooqrsussvvwxz][-A num][-B num][-C[num]][-e pattern][-f file][-binary files=value][-color=when][-context[=num][-directories=action][-label][-line buffered][-null][pattern][file…]
您的grep版本似乎不支持
-z
选项。您可以使用
grep--version
检查grep版本。此解决方案适用于GNU grep
#!/bin/bash

wget -q https://support.apple.com/en-us/HT210060 -O- \
    | \grep -ziP "(?s)<h3>macos.*?<h3>" \
    | xargs -0 \
    | \grep -P "<tr><td>|<td>[\d, ]+</td>" \
    | sed 's:.*<td>\(.*\)</td>:\1:'
$ script.sh
appldnld.apple.com
80
gg.apple.com
443, 80
...
80
updates.cdn-apple.com
443
xp.apple.com
443