shell如何将一行的数据求累加值网上很多awk都是加列,不是行。

shell如何将一行的数据求累加值网上很多awk都是加列,不是行。,第1张

如果一个atxt文件中有一行数据,每个用空格隔开的:

1 2 5 23 4 77 23 4 6

那么可以用awk计算一行的数据求和

awk '

{

for (i=1; i<= NF; i++) sum += $i;

print sum;

}

' atxt

就会输出一行的求和结果。如果有多行的话,上面的程序会输出每一行的求和结果。

如果多个内容是与关系,可以多个grep用管道相连,是或关系,可用正则式

如grep '\(ab|cd\)' atxt 是查包含 ab或cd的行, grep 'ab' atxt | grep 'cd' 是查包含ab和cd的行

要将结果赋到变量 a=`grep '\(ab|cd\)' atxt ` 就行了

在python里就相当好办了,用不着grep啦,字符串的find函数就行啦

所有的编程书籍都是通过一个“Hello world!”简单程序入门,作为借鉴,本文也采用此方法带大家入门。现在,在当前目录下建立一个文本文件hellotxt,内容如下:

Hello world!

在命令行中输入以下命令:

$ awk '{ print }' hellotxt

执行后hellotxt文件的内容显示在屏幕上。编写并且执行awk程序的方法很简单,如上所示,花括号内的是程序代码,后面的hellotxt为指定的输入文件。awk是一种行处理程序,执行awk时,它依次对输入文件中的每一行执行花括号中的代码,如上面的例子,就是对hellotxt中的每一行执行print命令。所有输出都发送到stdout,最后在屏幕上显示的结果为“Hello world!”。

上面的例子是将脚本作为命令行自变量传递给awk,我们也可以把脚本写入一个外部文件,然后通过-f选项向awk传递这个脚本文件。例如编写脚本文件helloask如下:

{ print }

然后通过如下方式执行:

$ awk -f helloawk hellotxt

这种编写独立脚本文件的方式应用在多行、比较复杂的程序上,非常合适,而且,在后面你还将看到,这种方式还可以让你非常方便地使用附加awk功能。

背景:可能我们会遇到获取Linux命令执行结果的某一列或某一行的信息。

awk -F  '\t'  '{print $1}'  nametxt

其中-F表示分割符,本例为\t,$1表示第1列 ,$0表示全部。

ls -lrt  | awk -F ' ' '{print $NF}'

好处:这种情况下不需要知道所获取信息在哪一列,直接取最后一列即可。

其中-F表示分割符,本例为空格,$NF表示最后一列,$(NF-1)表示倒数第二列。

awk 'NR awk 'NR==1,NR==4 {print}'  file

行号等于1和4的打印出来

awk 'END {print}' nametxt

部分参考 >

以上就是关于shell如何将一行的数据求累加值网上很多awk都是加列,不是行。全部的内容,包括:shell如何将一行的数据求累加值网上很多awk都是加列,不是行。、在linux系统中 用shell 或者python 运行 grep 命令 但要查找的内容是很多个 并想把结果放到一个变量中、linux shell中awk的用法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9775127.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存