我写了一个如下脚本:
#!/bin/bash
c0="show databases"
c1="select count(grade1) from INFO where grade2>60;"
i=0
( while((i++<5))
do
echo ${c1}
done ) | influx -precision rfc3339 -port 50010 -database Ttest10w8
运行此脚本时,我在命令行中获得如下输出:
name: INFO
time count
---- -----
1970-01-01T00:00:00Z 42000
1970-01-01T00:00:00Z 43007
1970-01-01T00:00:00Z 44010
1970-01-01T00:00:00Z 45015
1970-01-01T00:00:00Z 46015
我想获取count
中的所有数字。
那是我想在运行脚本时获取所有数字(42000
,43007
,44010
,45015
),然后我将使用这些数字来在while
循环结束后执行其他操作。
我该怎么做?
答案 0 :(得分:0)
您只能使用grep
过滤数据行(以数字开头),使用awk
打印第二列并将其插入数组。
arr=();
( while((i++<5))
do
entry=$(echo ${c1} | grep -P "^\d" | awk '{print $2}')
arr+=($entry)
done ) ...
echo ${arr[@]}
答案 1 :(得分:0)
我不会为此使用while循环。
要打印c1
四次:
printf '%s\n' "$c1"{,,,}
或者,要打印c1
n
次:
printf "%.0s${c1//%/%%}\n" $(seq n)
要获取count
列的内容:
awk 'NR>3{print $2}'
要将输出读取到数组中:
readarray my_array
将它们放在一起:
readarray my_array < <( printf '%s\n' "$c1"{,,,} | influx args | awk 'NR>3{print $2}' )