我想从wget命令输出的最后一位解析3条信息。例如:
2022-12-26 19:14:44 (13.7 Mb/s) - ‘somelibrary.min.js’ saved [1077022]
我能够得到日期/时间,因为这是固定长度。我无法提取est.传输速度(13/7
)和文件大小(1077022
)值。
STR="2022-12-26 19:14:44 (13.7 Mb/s) - ‘somelibrary.min.js’ saved [1077022]"
echo date/time is ${STR::19}
我想剩下的子字符串提取需要借助正则表达式来完成,但我无法找到它。是否有一条仅使用 *nix utils(如awk、sed等)的可行路径?
我试过awk:
echo "(13.7 Mb/s)" | awk '$0 ~ /(.* Mb\/s)/ {print $1}'
但是我得到的是(13.7
而不仅仅是数字。
3条答案
按热度按时间wkftcu5l1#
这个
awk
应该适合您:-F '[][()[:blank:]]+'
将[
或]
或(
或)
的1+或空白设置为输入字段分隔符txu3uszq2#
您可以使用bash的正则表达式匹配来实现这一点,在RE中使用
( )
来捕获相关部分,然后使用${BASH_REMATCH[n]}
来获取它们:顺便说一句,我建议使用小写或混合大小写的变量名,以避免与具有特殊函数的许多全大写名称冲突,并通过shellcheck.net运行脚本以查找常见错误。
gr8qqesn3#
使用你展示的示例,请尝试以下
awk
代码。在GNUawk
中编写和测试。这里是Online Demo用于使用正则表达式。