我做了一個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>
它們總是以相同的順序嗎?然後只有在打印第二個後才能退出。在'sed'手冊頁中查找'T'和't'。 – tripleee 2012-08-11 20:55:51