在POSIX ERE正回顾后或非捕获组(扩展正则表达式)
问题描述:
在CSV文件中也有类似的这一个行:在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
。
如何从行中捕获唯一的视频ID部分?
答
$ awk '{gsub(/.*vimeo.com\/video\/|".*/,"")}1' file
30342373
答
它与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/
,然后从剥离到"
结束一切,从而使我们只用唯一的ID。
谢谢!这工作完美。 – Lanti