Bash 如何从shell中的输出中提取单独行上的多个浮点?

Bash 如何从shell中的输出中提取单独行上的多个浮点?,bash,Bash,我需要使用bash从多行输出中提取浮点值,并从speedtest cli shell输出中提取多个浮点值。然后我将把它们分配给一个变量 一些示例输出: Ping: 13.25ms Download: 37.66Mbps Upload: 5.03Mbps 我最好怎么做?获取浮点数并将其放入数组中: numbers=( $(speedtest-cli ... | grep -Eo '\b[0-9]+(\.[0-9]+)?') ) grep-Eo'\b[0-9]+(\[0-9]+)?'从spee

我需要使用bash从多行输出中提取浮点值,并从speedtest cli shell输出中提取多个浮点值。然后我将把它们分配给一个变量

一些示例输出:

Ping: 13.25ms
Download: 37.66Mbps
Upload: 5.03Mbps

我最好怎么做?

获取浮点数并将其放入数组中:

numbers=( $(speedtest-cli ... | grep -Eo '\b[0-9]+(\.[0-9]+)?') )
  • grep-Eo'\b[0-9]+(\[0-9]+)?'
    speedtest cli的输出中获取浮点值

  • numbers
    是一个包含浮点数的数组,现在您可以使用常规数组操作操作数组元素


而不是将它们存储在数组中,如何将输出存储在单独的变量中?@Pelts
bash
(索引)数组是零索引的,您可以通过
${numbers[0]}
获得第一个元素,通过
${numbers[1]}
获得第二个元素。如果需要显式使用变量,我建议您将数组值指定为此类变量的值,而不更改当前流。