在CSV文件中,有与此类似的行:
<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部分?
答案 0 :(得分: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/
的所有内容,然后删除从"
到结尾的所有内容,从而为我们留下唯一的ID。
答案 1 :(得分:1)
$ awk '{gsub(/.*vimeo.com\/video\/|".*/,"")}1' file
30342373