这个问题特别是正则表达式问题。
我想使用
curl
捕获 bash
中 grep
命令的进度百分比,但不包括浮点数。目标是将这些捕获的值呈现给 dialog
的 --gauge
选项。
这是我迄今为止所取得的成就:
$ curl -#LO "http://upload.wikimedia.org/wikipedia/commons/4/4e/Pleiades_large.jpg" 2>&1 | stdbuf -oL tr '\r' '\n' | grep -Eo '[0-9.]*'
上面的示例命令将输出如下内容:
3.8
20.1
47.1
93.4
100.0
但我期待这样的结果:
3
20
47
93
100
我为此搜索了正则表达式,但没有找到任何好的结果。
非常感谢任何帮助。
只需使用 .作为分隔符
$ curl -#LO "http://upload.wikimedia.org/wikipedia/commons/4/4e/Pleiades_large.jpg" 2>&1 | stdbuf -oL tr '\r' '\n' | grep -Eo '[0-9.]*' | cut -f1 -d\.
可以使用
grep --line-buffered
改进解决方案
$ curl -#LO "http://upload.wikimedia.org/wikipedia/commons/4/4e/Pleiades_large.jpg" 2>&1 | stdbuf -oL tr '\r' '\n' | grep --line-buffered -Eo '[0-9.]*' | cut -f1 -d\.