【问题标题】:Capture the progress percentage of curl but without the decimal numbers捕获 curl 的进度百分比但没有十进制数字
【发布时间】:2020-10-14 11:00:38
【问题描述】:

这个问题特别是正则表达式问题。

我想使用grep 捕获bashcurl 命令的进度百分比,但不包括浮点数。目标是将这些捕获的值呈现给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

我已经为此搜索了一个正则表达式,但没有找到任何好的结果。

非常感谢任何帮助。

【问题讨论】:

  • 您可以使用. 作为字段分隔符,并在您拥有的当前输出上使用cutawk 甚至grep -o 获取第一个字段.. 如果您有GNU grep 与PCRE,那么你可以使用前瞻来做一个命令
  • @Sundeep 你说得对,先生!我忘了cut 命令可以使用-d 选项删除文本。如果您回复示例,我会将其标记为答案:) 编辑: Tttthank yououuu.

标签: regex bash curl grep


【解决方案1】:

只需使用 .作为分隔符

$ 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\.

【讨论】:

  • 我注意到这个例子会对大文件产生缓冲问题,所以我所做的就是在每个管道前面加上stdbufcurl -#LO ${url} 2>&1 | stdbuf -o L tr '\r' '\n' | stdbuf -o L grep -Eo '[0-9.]*' | stdbuf -o L cut -d '.' -f 1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-02
  • 1970-01-01
  • 1970-01-01
  • 2011-06-10
  • 2021-10-10
  • 2022-01-14
  • 1970-01-01
相关资源
最近更新 更多