shell 的风格就是不要用一个工具解决所有的问题,所以这种一般都是 sed tr grep awk cut 一起上。
如果追求一个命令搞定一切,可以用 perl,大多数系统也都有预装。
我当初学习 Perl 就是因为两个原因:
1,一个命令搞定一切,总感觉比多个命令效率更高一些
2,Perl 的跨平台支持也比 shell 命令好一些,正则表达式也不用学那么多套
zsh > ffmpeg -hide_banner -i 三教极简史.mkv 2>&1 | perl -lne 'print $1 if /Stream.*\d+x(\d+)/'
1080
实测没问题。
【 在 anhnmncb 的大作中提到: 】
: 我的某个命令cmd的输出是:
: Duration: 00:01:16.73, start: 0.000000, bitrate: 1676 kb/s
: Stream #0:0(und): Video: h264 (avc1 / 0x31637661), none(tv, bt709), 1280x720, 1618 kb/s, 30 fps, 30 tbr, 12800 tbn, 12800 tbc (default)
: Metadata:
: handler_name : VideoHandler
: Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 48 kb/s (default)
: 我想获取到的是其中的1280x720中的720这个数,不知应该怎么做呢?
: 我现在是用
: cmd 2>&1 | grep "Stream #0:0" | grep -oe "\d\{3,\}x\d\{3,\}"
: 得到了1280x720,然后不知怎么做了……
--
修改:flw FROM 27.38.197.*
FROM 27.38.197.*