微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用awk / sed从一行中提取数字

我有这个string:

Stream #0:0: Video: vp6f,yuv420p,852x478,1638 kb/s,25 tbr,1k tbn,1k tbc

我想从中提取25 。 我用:

sed -r 's/.+([0-9]{2} tbr).+/1/'

它返回我所需要的。

无论如何,如果相反,我遇到一个string

expr意外的行为

如何从C源文件删除所有/ * * /注释?

如何匹配以string开头的string(使用正则expression式)

使用awkreplace正则expression式模式

htaccess比较cookie值,如果评估返回true / false,则redirect

Stream #0:0(eng): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D),1920x1080 [SAR 1:1 DAR 16:9],11981 kb/s,29.97 fps,29.97 tbr,30k tbn,30k tbc

它不会返回我所需要的。

我尝试了不同的替代方法,所以tbr的值在两种情况下都会返回,但找不到正确的expression式。

使用.htaccessredirect网站,但排除两个+文件

sed脚本扩展正则expression式

取消KeyUP事件的处理程序? VB.NET

.htaccess重写规则删除RK = 0 / RS =后的所有内容

linux使用重命名重命名多个文件

下面是awk一个方法

$ awk '/tbr/{print $1}' RS=,file 25 29.97

说明:

认情况下, awk将每一行视为记录,通过设置RS,我们将记录分隔符设置为逗号。 该脚本查看每条记录并打印与tbr匹配的任何记录的第一个字段。

使用积极向上的 GNU grep方法

$ grep -Po '[0-9.]+(?= tbr)' file 25 29.97

如果你调整了正则表达式,你当前的sed命令将工作得很好:

sed -r 's/.+ (S+) tbr,.+/1/'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐