I am wondering if there is в way I хан download (with wget
probably) an html file lets say http://vodlocker.com/embed-wrdlm4dbigu4-850x450.html
Here is the html file in pastebin. Here is the important stuff though.
<script type='text/javascript'> jwplayer("flvplayer").setup({
file: "http://77.81.98.228:8777/n2ceexa2lo4pcnokaldsf4o64qg7le7rp2xxamcxtdebx4vta3lae5iz6e/v.mp4",
skin: "beelden",
image: "http://77.81.98.228:8777/i/03/00494/wrdlm4dbigu4.jpg",
I need to extract http://77.81.98.228:8777/n2ceexa2lo4pcnokaldsf4o64qg7le7rp2xxamcxtdebx4vta3lae5iz6e/v.mp4
from that html file.
so the text between file:
and ",
I am new to ubuntu and в конечный интерфейс so I am unfamiliar with basic command line codes.
Используя grep
с PCRE (-P
):
grep -Po 'file:\s"\K[^"]+\.mp4(?=",)' file.txt
Используя sed
:
sed -nr 's/.*file: "([^"]+\.mp4)",/\1/p' file.txt
И находит желаемую строку между file "
и ",
, также мы должны соответствовать .mp4
незадолго до ",
так, чтобы другие нежелательные строки не обнаруживались в выводе.
Пример:
% wget -q -O- http://pastebin.com/raw/eQFTp0cy | grep -Po 'file:\s"\K[^"]+\.mp4(?=",)'
http://77.81.98.228:8777/n2ceexa2lo4pcnokaldsf4o64qg7le7rp2xxamcxtdebx4vta3lae5iz6e/v.mp4
% wget -q -O- http://pastebin.com/raw/eQFTp0cy | sed -nr 's/.*file: "([^"]+\.mp4)",/\1/p'
http://77.81.98.228:8777/n2ceexa2lo4pcnokaldsf4o64qg7le7rp2xxamcxtdebx4vta3lae5iz6e/v.mp4
Во-первых, обязательное предупреждение. Это обычно очень плохая идея , чтобы попытаться проанализировать HTML с простыми инструментами как регулярные выражения. Тем не менее в этом случае, если Вы уверены, что то, что Вы хотите, всегда будет между file:
и первое ,
, можно использовать:
wget -O - http://vodlocker.com/embed-wrdlm4dbigu4-850x450.html 2>/dev/null |
grep -oP 'file:\K[^,]*'
Вам нужно -O -
, чтобы сказать wget
печатать HTML к стандарту вместо того, чтобы сохранить в файл. Это тогда передается по каналу до grep
с Perl Совместимые Регулярные выражения (-P
) и -o
, чтобы сказать этому только печатать подобранную часть строки. Сам regex ищет file:
и затем отбрасывает его (\K
) и затем 0 или больше не - ,
символы ([^,]*
). 2>/dev/null
сообщения wget's отбрасываний.
Примечание, что в URL в качестве примера Вы дали, существует три соответствия:
$ wget -O - http://vodlocker.com/embed-wrdlm4dbigu4-850x450.html | grep -oP 'file:\K[^,]*'
"http://77.81.98.228:8777/n2ceexa2lo4pcnokaldsf4o64qg7le7rp2xxamcxtdebwqbtaozwssfetq/v.mp4"
"http://vodlocker.com/dl?op=get_slides&file_code=wrdlm4dbigu4"
"http://vodlocker.com/images/vodjw_logo.png"
, Если Вы знаете, Вы только нуждаетесь в первом, используете -m 1
, чтобы сказать grep
останавливаться после первого соответствия:
$ wget -O - http://vodlocker.com/embed-wrdlm4dbigu4-850x450.html 2>/dev/null |
grep -m1 -oP 'file:\K[^,]*'
"http://77.81.98.228:8777/n2ceexa2lo4pcnokaldsf4o64qg7le7rp2xxamcxtdebwqbtaozyasfetq/v.mp4"