我有一个文件格式如下:
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轻松完成,但我不熟悉语法,无法让它为我工作.
谢谢你的帮助
好的简单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介绍