2016-11-17 3 views
0

Dans un fichier CSV il y a des lignes similaires à celui-ci:lookbehind positif ou d'un groupe non-capture dans ERE POSIX (expressions rationnelles)

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

Je veux extraire 30342373 de ces lignes, qui se situe entre vimeo.com/video/ et ". J'ai essayé le regex suivant mawk:

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

qui capture: vimeo.com/video/30342373

Si je sais bien, mawk ne supporte que la syntaxe POSIX ERE, qui est similaire à egrep.

Comment puis-je capturer uniquement la partie d'identifiant vidéo unique à partir des lignes?

Répondre

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

Merci! Cela fonctionne parfaitement. – Lanti

1

Il est plus facile avec 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 

Ce sed premier tout du début à la bande vimeo.com/video/ et des bandes puis tout de " à la fin, nous laissant ainsi avec juste l'identifiant unique.