我尝试使用以下命令获取网页上的所有链接:
curl https://www.theiphonewiki.com/wiki/Firmware/iPhone/11.x 2>&1 | grep -o -E 'href="([^"#]+)"' | cut -d'"' -f2
从上面的命令输出的示例:
/w/index.php?title=1.62.00&action=edit&redlink=1
/w/index.php?title=1.03.06&action=edit&redlink=1
http://appldnld.apple.com/ios11.2/091-50808-20171204-1847CB08-D51D-11E7-881F-9E4D7B7A613A/iPhone10,6_11.2_15C113_Restore.ipsw
/w/index.php?title=Cinar_15C114_(iPhone10,3)&action=edit&redlink=1
/w/index.php?title=Cinar_15C114_(iPhone10,6)&action=edit&redlink=1
http://appldnld.apple.com/ios11.2/091-51760-20171206-BA09FB16-D5F7-11E7-A344-36B9DC24E03F/iPhone10,6_11.2_15C114_Restore.ipsw
http://appldnld.apple.com/ios11.2/091-48448-20171204-6BBD49C4-BB37-457E-B21F-D3758FAFC4BC/iPhoneiTunesUpdateReadMe.ipd
/w/index.php?title=Cinar_15C153_(iPhone10,3)&action=edit&redlink=1
/w/index.php?title=Cinar_15C153_(iPhone10,6)&action=edit&redlink=1
http://appldnld.apple.com/ios11.2.1/091-54847-20171213-5FBB02FC-DDFB-11E7-9CEF-07E4FB2783B2/iPhone10,6_11.2.1_15C153_Restore.ipsw
http://appldnld.apple.com/ios11.2.1/091-56152-20171213-AC5CB9A6-DF73-11E7-99DE-5B0F1E4B8CED/iPhoneiTunesUpdateReadMe.ipd
/w/index.php?title=Cinar_15C202_(iPhone10,3)&action=edit&redlink=1
/w/index.php?title=Cinar_15C202_(iPhone10,6)&action=edit&redlink=1
http://appldnld.apple.com/ios11.2.2/091-58675-20170108-B84E4534-F0C8-11E7-B3D8-7C2D869EB6BD/iPhone10,6_11.2.2_15C202_Restore.ipsw
http://appldnld.apple.com/ios11.2.2/091-58073-20180108-92DAC272-EFDE-11E7-83F1-982A165C2DF1/iPhoneiTunesUpdateReadMe.ipd从这里开始,我只想保持链接包含单词iPhone10,6,并以扩展.ipsw结尾。如果有什么帮助,我如何从这个命令行开始?
预期产出将是:
http://appldnld.apple.com/ios11.2/091-50808-20171204-1847CB08-D51D-11E7-881F-9E4D7B7A613A/iPhone10,6_11.2_15C113_Restore.ipsw
http://appldnld.apple.com/ios11.2/091-51760-20171206-BA09FB16-D5F7-11E7-A344-36B9DC24E03F/iPhone10,6_11.2_15C114_Restore.ipsw
http://appldnld.apple.com/ios11.2.1/091-54847-20171213-5FBB02FC-DDFB-11E7-9CEF-07E4FB2783B2/iPhone10,6_11.2.1_15C153_Restore.ipsw
http://appldnld.apple.com/ios11.2.2/091-58675-20170108-B84E4534-F0C8-11E7-B3D8-7C2D869EB6BD/iPhone10,6_11.2.2_15C202_Restore.ipsw谢谢!
发布于 2018-01-12 05:00:00
您可以用一个简单的grep和cut简化一系列的awk,但它不在问题的上下文中。但是,对于您的需求,只需将输出管道传输到AWK,如
| awk '/(iPhone10,6)/ && /.ipsw$/'它定义了两个regex条件来匹配(iPhone10,6)并以.ipsw扩展结束。
正如承诺在awk中完成的那样,我们可以使用GNU awk中的gensub()函数来用href捕获字符串,并且一旦识别出URL,如果它与使用match()函数所需的字符串匹配,则打印出来。
curl ... | awk '{url=gensub(/^(.*)href="([^"#]+)"(.*)$/,"\\2","g",$0); if (match(url, /iPhone10,6.*\.ipsw/)) print url}'https://stackoverflow.com/questions/48219298
复制相似问题