提问人:Кирилл Ермолаев 提问时间:9/27/2023 更新时间:9/28/2023 访问量:50
嗨,我需要在每个 ID 的每一行中添加 5 美元的金额
hi i need to add the amount $5 in each line of each id
问:
是否可以为每个 id 添加一行的总和 id;代码;类型;2023-06-30;2023-07-01;2023-07-02;2023-07-03;2023-07-04;2023-07-05;2023-07-06;2023-07-07;2023-07-08;2023-07-09;2023-07-10;2023-07-11;2023-07-12;2023-07-13;2023-07-14;2023-07-15;2023-07-16;2023-07-17;2023-07-18;2023-07-19;2023-07-20;2023-07-21;2023-07-22;2023-07-23;2023-07-24;2023-07-25;2023-07-26;018-118;超速违规;高速公路 27 OP RZ 27A-032 罗马“罗马”,km 16 + 072;12年24225;11年25164;43;27562;40;24877;14岁20993;47;26631;48;25119;3;1847;317;1;9465;2;7035;2;7556;5;7681;2;8401;(32+24225+31+25164+43+27562+40+24877+34+20993+47+26631+48+25119+3+1847+317+1+9465+2+7035+2+7556+5+7681+2+8401) 018-118;车道;27 号高速公路 OP RZ 27A-032 罗马,公里 16 + 072;3;8416;9;9114;4;9482;4;9312;5;8459;1;8552;2;8563;5;8772;6;9006;4;11910;4;9276;5;8685;2;8261;2;(3+8416+9+9114+4+9482+4+9312+5+8459+1+8552+2+8563+5+8772+6+9006+4+11910+4+9276+5+8685+2+8261+2)
我的代码
awk '
BEGIN {
FS = SUBSEP = ";"
ORS = ""
PROCINFO["sorted_in"] = "@ind_str_asc"
}
{
date[$1]
tuple[$3,$4,$6]
val[$3,$4,$6,$1] = $5
}
END {
print "id;code;type"
for (i in date) print FS i
print "\n"
for (i in tuple) {
print i
for (j in date) {
k = i SUBSEP j
print FS ( k in val ? val[k] : "" )
}
print "\n"
}
}
' test/all.csv >test.csv
答:
假设您想从第四列开始求和,而不是 ,这是一个简单的三行更改:$5
gawk '
BEGIN {
FS = SUBSEP = ";"
ORS = ""
PROCINFO["sorted_in"] = "@ind_str_asc"
}
{
date[$1]
tuple[$3,$4,$6]
val[$3,$4,$6,$1] = $5
total[$3,$4,$6] += $5 # for clarity, could just
# store in tuple array
}
END {
print "id;code;type"
for (i in date) print FS i
print FS "total\n"
for (i in tuple) {
print i
for (j in date) {
k = i SUBSEP j
print FS ( k in val ? val[k] : "" )
}
print FS total[i] "\n"
}
}
' test/all.csv >test.csv
评论