本文目录
linux下有没有对一列数字进行求和的命令
额,目测没有这样的程序。
不过可以自己写一个c的实现
#include 《stdio.h》#include 《stdlib.h》 int main(int argc, char *argv){ int i, res = 0; for (i = 1; i 《 argc; i++) res += atoi(argv); printf("%d", res); return 0; }
匆忙写的,可能有问题,见谅。
编译后用 ./a.out 1 2 3 4 5...... numberN调用即可。
用awk写了个自动求和句子,为什么每敲一次回车s的值就加一次5050呢
awk是把标准输入或文件按行扫描,然后按模式匹配执行相应的动作的。
你写的命令实际效果就是运行后,等待键盘的输入,每一行,就做一次1~100的求和,直到输入结束(Ctrl+D),所以每次敲回车都会加一次5050.
如果希望只计算一次,那么 需要在{}前添加一个模式词 BEGIN, 这样就不会等待键盘输入了。
应该写成
awk ’BEGIN {for(i=1;i《=100;i++) s=s+i;print i,s;}’
AWK求和,平均值,最值
以上示例,1~10,求和55,平均5.5,最大10【最小值没写,也可以设一个变量,保存最小值,END部分多打印一个变量即可。】
awk如何合并多个文件的同行数据
首先需要注意FNR和NR表示行号的区别:FNR是每个文件中的行号,每个文件都从第一行开始,而NR是awk处理的行号,1~N,不会从1开始,例如:
# awk ’{print NR,$0}’ file1 file21 a b c d2 a b d c3 a c b d4 aa bb cc dd5 aa bb dd cc6 aa cc bb dd
# awk ’{print FNR,$0}’ file1 file21 a b c d2 a b d c3 a c b d1 aa bb cc dd2 aa bb dd cc3 aa cc bb dd
所以,对不同文件同一行,比如第一行进行合并【如果是数字,进行求和】可以用:
awk ’FNR==1{sum=sum+$0}END{print sum}’ file1 file2 file3 ……
如果是字符串,可以将字符串连接,例如: