Bash:一行的求和字段

Mug*_*gen 2 bash awk

我有一个文件格式如下:

a 1 2 3 4
b 7 8
c 120
Run Code Online (Sandbox Code Playgroud)

我希望它被解析成:

a 10
b 15
c 120
Run Code Online (Sandbox Code Playgroud)

我知道这可以用awk轻松完成,但我不熟悉语法,无法让它为我工作.

谢谢你的帮助

pet*_*hes 5

好的简单awk入门:

awk '{ for (i=2;i<=NF;i++) { total+=$i }; print $1,total; total=0 }' file
Run Code Online (Sandbox Code Playgroud)

NF是一个内部变量,它在每一行上重置,并且等于该行上的字段数

for(i = 2; i <= NF; i ++)从2开始一个for循环

total + = $ i表示var total具有添加到其中的第i个字段的值.并且针对上面循环的每次迭代执行.

print $ 1,total打印第一个字段,后跟OFS变量的内容(默认为空格),然后是该行的总和.

total = 0重置为下一次迭代准备好的总数var.

所有这些都是在每一行输入上完成的.

有关更多信息,请参阅这里的 grymoires介绍