×

awk求和

linux下有没有对一列数字进行求和的命令?用awk写了个自动求和句子,为什么每敲一次回车s的值就加一次5050呢

admin admin 发表于2024-03-21 00:37:13 浏览34 评论0

抢沙发发表评论

其实awk求和的问题并不复杂,但是又很多的朋友都不太了解linux下有没有对一列数字进行求和的命令,因此呢,今天小编就来为大家分享awk求和的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

本文目录

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 ……

如果是字符串,可以将字符串连接,例如:

以上就是我们为大家找到的有关“linux下有没有对一列数字进行求和的命令?用awk写了个自动求和句子,为什么每敲一次回车s的值就加一次5050呢”的所有内容了,希望可以帮助到你。如果对我们网站的其他内容感兴趣请持续关注本站。