使用开始和结束特定字符剪切 shell 的输出

Cut output of shell with starts and finishes specific character

我有一个 html/text 文件,其中包含可下载的 URL 视频,但我需要将文件剪切为 link。

比如以url240=url360=或480等开头,有URLLinkOfUrl,以&jpg...[=20结束=]

我想得到像 url240=https://cs542402.vk.me/6/u313752528/videos/68ec547387.240.mp4?extra=JVSeMzU2-msXVuseackTFCgnVNEPOnboxMdXN3ZGH1l91djR7bk9DzaxyKFGJ2SXg39BcZxJM6tBip0ui3dDEkULDSbkuzpaOA 这样的输出,这就是我的观点 -->> https://cs542402.vk.me/6/u313752528/videos/68ec547387.240.mp4?extra=JVSeMzU2-msXVuseackTFCgnVNEPOnboxMdXN3ZGH1l91djR7bk9DzaxyKFGJ2SXg39BcZxJM6tBip0ui3dDEkULDSbkuzpaOA

我该怎么办?

我的目标是抓取视频 link 并从不使用浏览器或不使用手动操作的终端下载它。我打算编写一个 shell 脚本来自动执行此操作,因此我需要将 link 分配为变量,然后我将使用 axel $variable 。 (如果有人想知道我是如何得到的,我使用 wget 来获取 html/text 个文件。)

Here是我原来的html/text文件

我有文件的小文本:

</param> <param name="flashvars" value="uid=313752528&amp;vid=171193750&amp;oid=313752528&amp;host=https://cs542402.vk.me/&amp;vtag=68ec547387&amp;ltag=l_f4d9714c&amp;vkid=171193750&amp;md_title=Hi.Ki3+ep08&amp;md_author=Kadem+%26%23199%3Belik&amp;author_href=/id313752528&amp;hd=3&amp;no_flv=1&amp;hd_def=0&amp;dbg_on=0&amp;t=0&amp;duration=1399&amp;thumb=https://pp.vk.me/c621922/v621922528/26d5d/buRyDSImp1Y.jpg&amp;hash=17cc43bba064a6bd4c887b2b336e28a1&amp;hash2=8a5ce8fb95dac3b7&amp;angle=0&amp;img_angle=0&amp;repeat=0&amp;show_ads=0&amp;show_ads_postroll=0&amp;legal_owner=0&amp;eid1=0&amp;slot=0&amp;g=0&amp;a=0&amp;puid34=0&amp;water_mark=&amp;can_rotate=1&amp;no_adfox=1&amp;ads_preview=0&amp;puid4=0&amp;url240=https://cs542402.vk.me/6/u313752528/videos/68ec547387.240.mp4?extra=JVSeMzU2-msXVuseackTFCgnVNEPOnboxMdXN3ZGH1l91djR7bk9DzaxyKFGJ2SXg39BcZxJM6tBip0ui3dDEkULDSbkuzpaOA&amp;url360=https://cs542402.vk.me/6/u313752528/videos/68ec547387.360.mp4?extra=JVSeMzU2-msXVuseackTFCgnVNEPOnboxMdXN3ZGH1l91djR7bk9DzaxyKFGJ2SXg39BcZxJM6tBip0ui3dDEkULDSbkuzpaOA&amp;url480=https://cs542402.vk.me/6/u313752528/videos/68ec547387.480.mp4?extra=JVSeMzU2-msXVuseackTFCgnVNEPOnboxMdXN3ZGH1l91djR7bk9DzaxyKFGJ2SXg39BcZxJM6tBip0ui3dDEkULDSbkuzpaOA&amp;url720=https://cs542402.vk.me/6/u313752528/videos/68ec547387.720.mp4?extra=JVSeMzU2-msXVuseackTFCgnVNEPOnboxMdXN3ZGH1l91djR7bk9DzaxyKFGJ2SXg39BcZxJM6tBip0ui3dDEkULDSbkuzpaOA&amp;jpg=https://pp.vk.me/c621922/v621922528/26d5c/Hqe6Th45LmA.jpg&amp;timeline_thumbs=1&amp;timeline_thumbs_jpg=https://pp.vk.me/c623120/v623120528/403ab/W0o1WeSlf5o.jpg,https://pp.vk.me/c622717/v622717528/3bcdc/enzNOAL2PJw.jpg,https://pp.vk.me/c625626/v625626528/3edb9/y44h0j9UBT4.jpg&amp;timeline_thumbs_per_row=10&amp;timeline_thumbs_per_image=100&amp;timeline_thumbs_total=279&amp;timeline_thumb_width=133&amp;timeline_thumb_height=75&amp;ip_subm=1&amp;proxy=psv4&amp;https=1&amp;video_ext=1&amp;is_yandex=0&apm;&amp;is_vk=1&amp;is_ext=1&amp;referrer=&amp;lang_add=Add+to+My+Videos&amp;lang_added=Video+added+to+My+Videos&amp;lang_share=Share&amp;lang_like=Like&amp;lang_volume_on=Unmute&amp;lang_volume_off=Mute&amp;lang_volume=Volume&amp;lang_hdsd=Change+Video+Quality&amp;lang_open_popup=Expand&amp;lang_fullscreen=Full+Screen&amp;lang_window=Minimize&amp;lang_rotate=Rotate&amp;lang_ads_link=Advertiser%27s+Site&amp;lang_ads=Ads&amp;lang_ads_skip=Skip+ad&amp;lang_next=Next+video&amp;lang_replay=Replay&amp;lang_next_cancel=Cancel&amp;lang_ads_skip_time=Skip+ads+in+%7Btime%7D&amp;lang_report_problem=Report+a+problem..&amp;video_play_hd=Watch+in+HD&amp;video_stop_loading=Stop+Download&amp;video_player_version=VK+Video+Player&amp;goto_orig_video=Go+to+Video&amp;video_get_video_code=Copy+video+code&amp;video_load_error=The+video+has+not+uploaded+yet+or+the+server+is+not+available&amp;video_get_current_url=Copy+frame+link"></param> <param name="wmode" value="opaque"></param> <embed id="flash_video_obj" align="top" src="/swf/video.swf?94" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="100%" height="100%" wmode="opaque" flashvars=uid=313752528&amp;vid=171193750&amp;oid=313752528&amp;host=https://cs542402.vk.me/&amp;vtag=68ec547387&amp;ltag=l_f4d9714c&amp;vkid=171193750&amp;md_title=Hi.Ki3+ep08&amp;md_author=Kadem+%26%23199%3Belik&amp;author_href=/id313752528&amp;hd=3&amp;no_flv=1&amp;hd_def=0&amp;dbg_on=0&amp;t=0&amp;duration=1399&amp;thumb=https://pp.vk.me/c621922/v621922528/26d5d/buRyDSImp1Y.jpg&amp;hash=17cc43bba064a6bd4c887b2b336e28a1&amp;hash2=8a5ce8fb95dac3b7&amp;angle=0&amp;img_angle=0&amp;repeat=0&amp;show_ads=0&amp;show_ads_postroll=0&amp;legal_owner=0&amp;eid1=0&amp;slot=0&amp;g=0&amp;a=0&amp;puid34=0&amp;water_mark=&amp;can_rotate=1&amp;no_adfox=1&amp;ads_preview=0&amp;puid4=0&amp;url240=https://cs542402.vk.me/6/u313752528/videos/68ec547387.240.mp4?extra=JVSeMzU2-msXVuseackTFCgnVNEPOnboxMdXN3ZGH1l91djR7bk9DzaxyKFGJ2SXg39BcZxJM6tBip0ui3dDEkULDSbkuzpaOA&amp;url360=https://cs542402.vk.me/6/u313752528/videos/68ec547387.360.mp4?extra=JVSeMzU2-msXVuseackTFCgnVNEPOnboxMdXN3ZGH1l91djR7bk9DzaxyKFGJ2SXg39BcZxJM6tBip0ui3dDEkULDSbkuzpaOA&amp;url480=https://cs542402.vk.me/6/u313752528/videos/68ec547387.480.mp4?extra=JVSeMzU2-msXVuseackTFCgnVNEPOnboxMdXN3ZGH1l91djR7bk9DzaxyKFGJ2SXg39BcZxJM6tBip0ui3dDEkULDSbkuzpaOA&amp;url720=https://cs542402.vk.me/6/u313752528/videos/68ec547387.720.mp4?extra=JVSeMzU2-msXVuseackTFCgnVNEPOnboxMdXN3ZGH1l91djR7bk9DzaxyKFGJ2SXg39BcZxJM6tBip0ui3dDEkULDSbkuzpaOA&amp;jpg=https://pp.vk.me/c621922/v621922528/26d5c/Hqe6Th45LmA.jpg&amp;timeline_thumbs=1&amp;timeline_thumbs_jpg=https://pp.vk.me/c623120/v623120528/403ab/W0o1WeSlf5o.jpg,https://pp.vk.me/c622717/v622717528/3bcdc/enzNOAL2PJw.jpg,https://pp.vk.me/c625626/v625626528/3edb9/y44h0j9UBT4.jpg&amp;timeline_thumbs_per_row=10&amp;timeline_thumbs_per_image=100&amp;timeline_thumbs_total=279&amp;timeline_thumb_width=133&amp;timeline_thumb_height=75&amp;ip_subm=1&amp;proxy=psv4&amp;https=1&amp;video_ext=1&amp;is_yandex=0&apm;&amp;is_vk=1&amp;is_ext=1&amp;referrer=&amp;lang_add=Add+to+My+Videos&amp;lang_added=Video+added+to+My+Videos&amp;lang_share=Share&amp;lang_like=Like&amp;lang_volume_on=Unmute&amp;lang_volume_off=Mute&amp;lang_volume=Volume&amp;lang_hdsd=Change+Video+Quality&amp;lang_open_popup=Expand&amp;lang_fullscreen=Full+Screen&amp;lang_window=Minimize&amp;lang_rotate=Rotate&amp;lang_ads_link=Advertiser%27s+Site&amp;lang_ads=Ads&amp;lang_ads_skip=Skip+ad&amp;lang_next=Next+video&amp;lang_replay=Replay&amp;lang_next_cancel=Cancel&amp;lang_ads_skip_time=Skip+ads+in+%7Btime%7D&amp;lang_report_problem=Report+a+problem..&amp;video_play_hd=Watch+in+HD&amp;video_stop_loading=Stop+Download&amp;video_player_version=VK+Video+Player&amp;goto_orig_video=Go+to+Video&amp;video_get_video_code=Copy+video+code&amp;video_load_error=The+video+has+not+uploaded+yet+or+the+server+is+not+available&amp;video_get_current_url=Copy+frame+link></embed> </object>

这应该会给你一些想法...

sed 's/&amp;/\n/g' | grep url240 | cut -d= -f2

用“&”连接的分隔参数,grep需要的行,得到=号右边。

如果内容中有=号,按变量名长度裁剪即可。例如

var="url240"; sed 's/&amp;/\n/g' | grep $var | cut -c $((${#var}+2))-

非常感谢 karakfa 因为你的想法! 我用这个命令解决了我的问题:

sed 's/&amp;/\n/g' MyFile  | grep url240 | sed -n '1p'

第一个 sed 命令将 &amp; 替换为 space 字符,因此之后使用 grep 我得到 3 行(最后一行很长)。在那之后 sed 我从输出中删除了第一行,现在它运行良好。但我的输出看起来像那样

url240=https://cs542402.vk.me/6/u313752528/videos/68ec547387.240.mp4?extra=JVSeMzU2-msXVuseackTFCgnVNEPOnboxMdXN3ZGH1l91djR7bk9DzaxyKFGJ2SXg39BcZxJM6tBip0ui3dDEkULDSbkuzpaOA

所以,我添加了 tail -c +8,我的最终命令如下所示

sed 's/&amp;/\n/g' MyFile  | grep url240 | sed -n '1p' | tail -c +8