如何使用 awk 和其他方法对特定行求和?

如何使用 awk 和其他方法对特定行求和?
123|Raghu|80|90|60

234|Maya|10|20|30

123|Atul|20|30|60

413|Gita|56|71|89

745|Mohan|22|100|23

这是我的文本文件,我需要将每个学生的分数相加并逐行打印出来。

答案1

您不需要 awk 来实现这一点,bash 脚本就可以做到:

#!/bin/bash
IFS='|'
while read -r -a array line
do
  i=0;sum=0;line=""
  for element in "${array[@]}"
  do
    if [ $i -gt 1 ]
    then
      let sum=sum+$element        
    else
      line=$line$element$IFS
    fi
    let i=i+1
  done
  echo "$line$sum"
done < "${1:-/dev/stdin}"

如果上述脚本名为 process,数据文件名为 data,则运行

process < data

将产生

123|Raghu|230
234|Maya|60
123|Atul|110
413|Gita|216
745|Mohan|145

相关内容