awk,命令foreach 12行插入查询

时间:2018-02-04 20:18:03

标签: sql perl awk sed jq

我有以下脚本:

curl -s 'https://someonepage=5m' | jq '.[]|.[0],.[1],.[2],.[3],.[4],.[5],.[6],.[7],.[8],.[9],.[10],.[11],.[12]' | perl -p -e 's/\"//g' |awk '/^[0-9]/{print; if (++onr%12 == 0) print ""; }'

这是结果的一部分:

1517773500000
0.10250100
0.10275700
0.10243500
0.10256600
257.26700000
1517773799999
26.38912220
1229
104.32200000
10.70579910
0

1517773800000
0.10256600
0.10268000
0.10231600
0.10243400
310.64600000
1517774099999
31.83806883
1452
129.70500000
13.29758266
0

1517774100000
0.10243400
0.10257500
0.10211800
0.10230000
359.06300000
1517774399999
36.73708621
1296
154.78500000
15.84041910
0

我想将这些数据插入MySQL数据库。我想为每一行得到这个结果:

(1517773800000,0.10256600,0.10268000,0.10231600,0.10243400,310.64600000,1517774099999,31.83806883,1452,129.70500000,13.29758266,0)

(1517774100000,0.10243400,0.10257500,0.10211800,0.10230000,359.06300000,151774399999,36.73708621,1296,154.78500000,15.84041910,0)

我需要每12行合并一行,任何可以帮助我获得这个结果。

2 个答案:

答案 0 :(得分:1)

$ awk 'BEGIN {RS=""; OFS=","} {$1=$1; $0="("$0")"}1' file
(1517773500000,0.10250100,0.10275700,0.10243500,0.10256600,257.26700000,1517773799999,26.38912220,1229,104.32200000,10.70579910,0)
(1517773800000,0.10256600,0.10268000,0.10231600,0.10243400,310.64600000,1517774099999,31.83806883,1452,129.70500000,13.29758266,0)
(1517774100000,0.10243400,0.10257500,0.10211800,0.10230000,359.06300000,1517774399999,36.73708621,1296,154.78500000,15.84041910,0)

<强> RS =&#34;&#34;
处理分隔一个或多个空行的行组作为记录

<强> OFS =&#34;&#34;
将输出分隔符设置为&#34;,&#34;

<强> $ 1 = $ 1
重构该行,用输出分隔符替换输入分隔符

<强> $ 0 =&#34;(&#34; $ 0#34)&#34;
用parens围绕记录

<强> 1
打印记录

答案 1 :(得分:1)

这是一个全jq解决方案:

.[] | .[0:12] | @tsv | gsub("\t";",") | "(\(.))"

在示例中,所有子数组的长度均为12,因此您可以删除管道的.[0:12]部分。如果使用jq 1.5或更高版本,则可以使用join(“,”)代替管道的@tsv | gsub部分。例如,您可能需要考虑:

.[] | join(“,”) | “(\(.))”.   # jq 1.5 or later

调用:使用-r命令行选项

示例输出:

(1517627400000,0.10452300,0.10499000,0.10418200,0.10449400,819.50400000,1517627699999,85.57150693,2340,452.63400000,47.27213035,0)
(1517627700000,0.10435700,0.10449200,0.10366000,0.10370000,717.37000000,1517627999999,74.60582079,1996,321.25500000,33.42273846,0)
(1517628000000,0.10376600,0.10390000,0.10366000,0.10370400,519.59400000,1517628299999,53.88836170,1258,239.89300000,24.88613854,0)