Arrays 对文件中的行求和
我想基于一个列字段添加行。是否可以通过awk命令或任何简单的方式执行Arrays 对文件中的行求和,arrays,shell,unix,awk,sed,Arrays,Shell,Unix,Awk,Sed,我想基于一个列字段添加行。是否可以通过awk命令或任何简单的方式执行 Date Hour Requests Success Error 10-Apr 11 1 1 0 10-Apr 13 1 1 0 10-Apr 14 1 1 0 10-Apr 18 1 1 0 10-Apr 9 1
Date Hour Requests Success Error
10-Apr 11 1 1 0
10-Apr 13 1 1 0
10-Apr 14 1 1 0
10-Apr 18 1 1 0
10-Apr 9 1 1 0
10-Apr 11 1 1 0
10-Apr 12 3 3 0
10-Apr 13 2 1 1
10-Apr 14 2 2 0
10-Apr 15 1 1 0
10-Apr 16 1 1 0
10-Apr 12 3 3 0
10-Apr 13 4 1 3
10-Apr 14 1 1 0
10-Apr 16 2 2 0
10-Apr 18 1 1 0
10-Apr 10 3 3 0
10-Apr 11 1 1 0
10-Apr 12 3 3 0
10-Apr 13 1 1 0
10-Apr 14 2 2 0
10-Apr 15 2 2 0
10-Apr 16 2 2 0
10-Apr 17 2 2 0
从上表中,我希望根据小时添加行(请求、成功、该小时的错误),o/p应如下所示
Date Hour Requests Success Error
10-Apr 9 1 1 0
10-Apr 10 3 3 0
10-Apr 11 3 3 0
10-Apr 12 9 9 0
10-Apr 13 8 4 4
10-Apr 14 6 6 0
10-Apr 15 3 3 0
10-Apr 16 5 5 0
10-Apr 17 2 2 0
10-Apr 18 2 2 0
将GNU awk用于真正的多维数组,并在中排序
:
$ cat tst.awk
NR==1 { print; next }
!seen[$1]++ { dates[++numDates] = $1 }
{ for (i=3;i<=NF;i++) sum[$1][$2][i] += $i }
END {
PROCINFO["sorted_in"] = "@ind_num_asc"
for (dateNr=1; dateNr<=numDates; dateNr++) {
date = dates[dateNr]
for (hr in sum[date]) {
printf "%s %s ", date, hr
for (i=3;i<=NF;i++) {
printf "%s%s", sum[date][hr][i], (i<NF?OFS:ORS)
}
}
}
}
$ awk -f tst.awk file | column -t
Date Hour Requests Success Error
10-Apr 9 1 1 0
10-Apr 10 3 3 0
10-Apr 11 3 3 0
10-Apr 12 9 9 0
10-Apr 13 8 4 4
10-Apr 14 6 6 0
10-Apr 15 3 3 0
10-Apr 16 5 5 0
10-Apr 17 2 2 0
10-Apr 18 2 2 0
$cat tst.awk
NR==1{打印;下一个}
!已看到[$1]+{dates[++numDates]=$1}
{对于(i=3;i使用GNU awk处理真正的多维数组,并在
中排序:
$ cat tst.awk
NR==1 { print; next }
!seen[$1]++ { dates[++numDates] = $1 }
{ for (i=3;i<=NF;i++) sum[$1][$2][i] += $i }
END {
PROCINFO["sorted_in"] = "@ind_num_asc"
for (dateNr=1; dateNr<=numDates; dateNr++) {
date = dates[dateNr]
for (hr in sum[date]) {
printf "%s %s ", date, hr
for (i=3;i<=NF;i++) {
printf "%s%s", sum[date][hr][i], (i<NF?OFS:ORS)
}
}
}
}
$ awk -f tst.awk file | column -t
Date Hour Requests Success Error
10-Apr 9 1 1 0
10-Apr 10 3 3 0
10-Apr 11 3 3 0
10-Apr 12 9 9 0
10-Apr 13 8 4 4
10-Apr 14 6 6 0
10-Apr 15 3 3 0
10-Apr 16 5 5 0
10-Apr 17 2 2 0
10-Apr 18 2 2 0
$cat tst.awk
NR==1{打印;下一个}
!已看到[$1]+{dates[++numDates]=$1}
{对于(i=3;i使用GNU awk处理真正的多维数组,并在
中排序:
$ cat tst.awk
NR==1 { print; next }
!seen[$1]++ { dates[++numDates] = $1 }
{ for (i=3;i<=NF;i++) sum[$1][$2][i] += $i }
END {
PROCINFO["sorted_in"] = "@ind_num_asc"
for (dateNr=1; dateNr<=numDates; dateNr++) {
date = dates[dateNr]
for (hr in sum[date]) {
printf "%s %s ", date, hr
for (i=3;i<=NF;i++) {
printf "%s%s", sum[date][hr][i], (i<NF?OFS:ORS)
}
}
}
}
$ awk -f tst.awk file | column -t
Date Hour Requests Success Error
10-Apr 9 1 1 0
10-Apr 10 3 3 0
10-Apr 11 3 3 0
10-Apr 12 9 9 0
10-Apr 13 8 4 4
10-Apr 14 6 6 0
10-Apr 15 3 3 0
10-Apr 16 5 5 0
10-Apr 17 2 2 0
10-Apr 18 2 2 0
$cat tst.awk
NR==1{打印;下一个}
!已看到[$1]+{dates[++numDates]=$1}
{对于(i=3;i使用GNU awk处理真正的多维数组,并在
中排序:
$ cat tst.awk
NR==1 { print; next }
!seen[$1]++ { dates[++numDates] = $1 }
{ for (i=3;i<=NF;i++) sum[$1][$2][i] += $i }
END {
PROCINFO["sorted_in"] = "@ind_num_asc"
for (dateNr=1; dateNr<=numDates; dateNr++) {
date = dates[dateNr]
for (hr in sum[date]) {
printf "%s %s ", date, hr
for (i=3;i<=NF;i++) {
printf "%s%s", sum[date][hr][i], (i<NF?OFS:ORS)
}
}
}
}
$ awk -f tst.awk file | column -t
Date Hour Requests Success Error
10-Apr 9 1 1 0
10-Apr 10 3 3 0
10-Apr 11 3 3 0
10-Apr 12 9 9 0
10-Apr 13 8 4 4
10-Apr 14 6 6 0
10-Apr 15 3 3 0
10-Apr 16 5 5 0
10-Apr 17 2 2 0
10-Apr 18 2 2 0
$cat tst.awk
NR==1{打印;下一个}
!已看到[$1]+{dates[++numDates]=$1}
{for(i=3;如果您是指sum fields
notadd rows
。FYI您是指sum fields
notadd rows
。FYI您是指notadd rows
。FYI您是指sum fields
notadd rows
。