Scripting 对图案之间的第四个字段数据求和
假设我的数据是: *dnet*1234 1.2 1端口*12 2.3 3端口1*34 0.2 7*150.1 *dnet*234 0.2 2*120.1 4*123*234 1.2 字段之间用空格隔开 在这里,我想得到每个*dnet中存在的第四个数据字段的总和。有些字段有第四个字段数据,有些字段没有。我想要第四个字段的和值,每个*dnet分开 我尝试使用awk,但无法获得。如果有人帮忙,我们会很感激的 上面的输出如下所示 *dnet*1234 1.2 2.5Scripting 对图案之间的第四个字段数据求和,scripting,Scripting,假设我的数据是: *dnet*1234 1.2 1端口*12 2.3 3端口1*34 0.2 7*150.1 *dnet*234 0.2 2*120.1 4*123*234 1.2 字段之间用空格隔开 在这里,我想得到每个*dnet中存在的第四个数据字段的总和。有些字段有第四个字段数据,有些字段没有。我想要第四个字段的和值,每个*dnet分开 我尝试使用awk,但无法获得。如果有人帮忙,我们会很感激的 上面的输出如下所示 *dnet*1234 1.2 2.5 *dnet*234 0.2 1.2评
*dnet*234 0.2 1.2评论,略为简化,评论版本
awk '
# look for header line
$1=="*dnet" {
# print any previously calculated sum
if (header) print header, sum
# reset sum for next block of lines
sum = 0
# save new header line
header = $0
# skip remaining actions
next
}
# if we get here, we know this is not a header line
# if there is a 4th field, add it to the sum
$4 {
sum += $4
}
END {
# print the final sum
if (header) print header, sum
}
' datafile
显示一个特定输入的输出示例
awk'函数p(){if(n){print n,s;n=s=0}}$1==“*dnet”{p();n=$0;next}$4{s+=$4}END{p()}数据
非常感谢,伙计,这很有效。你太棒了!你能解释一下代码吗。这会有帮助的