Extracting конечный Текст Стрингс in

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.

1
задан 25 December 2015 в 21:42

2 ответа

Используя 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
0
ответ дан 29 September 2019 в 23:58

Во-первых, обязательное предупреждение. Это обычно очень плохая идея , чтобы попытаться проанализировать 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"
0
ответ дан 29 September 2019 в 23:58

Другие вопросы по тегам:

Похожие вопросы: