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