2016-11-17 4 views
0

В CSV файла есть строка, похожая на этот:Positive просмотра назад или не захватив группу в POSIX ERE (Расширенные регулярные выражения)

<iframe src="https://player.vimeo.com/video/30342373" width="640" height="364" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe> 

Я хочу, чтобы извлечь 30342373 из этих линий, которая находится между vimeo.com/video/ и ". Я попробовал следующее регулярное выражение в mawk:

vimeo\.com\/video\/[^"]* 

Который захват: vimeo.com/video/30342373

Если я знаю, право, mawk только поддерживает POSIX ERE синтаксис, который похож на egrep.

Как я могу захватить только уникальную часть видеоизображения от линий?

ответ

1
$ awk '{gsub(/.*vimeo.com\/video\/|".*/,"")}1' file 
30342373 
+1

Thank you! Это прекрасно работает. – Lanti

1

Это проще с sed:

str='<iframe src="https://player.vimeo.com/video/30342373" width="640" height="364" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>' 

sed 's~.*\.vimeo\.com/video/~~; s~" .*~~' <<< "$str" 

30342373 

Это sed первая полоса все от начала до vimeo.com/video/, а затем раздевает все от " до конца, оставляя нас только с уникальным идентификатором.