我制作了一个 Bash 脚本来下载此页面http://php.net/downloads.php,然后搜索第一次出现的最新 PHP 文件名、版本和 MD5sum。现在我让它工作,但分成两个不同的 sed 命令。当我尝试将正则表达式放入单个正则表达式时,它不会匹配。我相信这与当前的换行符有关。
我如何使用一个单一的 sed 模式,我可以在一个数组(首选)或由空格分隔的所有三个匹配项中获得所有三个匹配项。
顺便说一句,它不必是 sed。我只想要运行脚本的系统可能会工作的东西,例如没有 perl。
wget -q http://php.net/downloads.php
FILE_INFO=$(sed -nr "s/.*(php-([0-9\.]+)\.tar\.bz2).*/\1 \2/p;T;q" downloads.php)
MD5SUM=$(sed -nr "s/.*md5: ([0-9a-f]{32}).*/\1/p;T;q" downloads.php)
echo $FILE_INFO
echo $MD5SUM
这些是相关文件中的两行,它需要从以下位置提取信息:
<a href="/get/php-5.4.5.tar.bz2/from/a/mirror">PHP 5.4.5 (tar.bz2)</a> [10,754Kb] - 19 July 2012<br />
<span class="md5sum">md5: ffcc7f4dcf2b79d667fe0c110e6cb724</span>