<p>对于所显示的示例,请尝试以下代码</p>
<pre><code>awk '
FNR==1{
print $0,"Total_Age Total_Weight Total_Height Percentage"
next
}
FNR>1{
totAge=totWeight=totHeight=0
split($3,tmp,",")
for(i in tmp){
totAge+=tmp[i]
}
split($4,tmp,",")
for(i in tmp){
totWeight+=tmp[i]
}
split($5,tmp,",")
for(i in tmp){
totHeight+=tmp[i]
}
$(NF+1)=totAge
$(NF+1)=totWeight
$(NF+1)=totHeight
$(NF+1)=$(NF-1)==0?"N/A":$NF/$(NF-1)
}
1' Input_file | column -t
</code></pre>
<p><em><strong>或</strong></em>添加上述<code>awk</code>代码的略短版本:</p>
<pre><code>awk '
BEGIN{OFS="\t"}
FNR==1{
print $0,"Total_Age Total_Weight Total_Height Percentage"
next
}
FNR>1{
totAge=totWeight=totHeight=0
split($3,tmp,",")
for(i in tmp){
totAge+=tmp[i]
}
split($4,tmp,",")
for(i in tmp){
totWeight+=tmp[i]
}
split($5,tmp,",")
for(i in tmp){
totHeight+=tmp[i]
}
$(NF+1)=totAge OFS totWeight OFS totHeight
$0=$0
$(NF+1)=( $(NF-1)==0 ? "N/A" : $NF/$(NF-1) )
}
1' Input_file | column -t
</code></pre>
<p><em><strong>解释:</strong></em>简单的解释是,取第三、第四和第五列的总和,并将它们分配到行的最后一列。根据OP的要求,相应地添加列值,该列值具有最后一列和最后第二列的除法值。使用<code>column -t</code>使其在输出上看起来更好</p>