Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用awk和grep进行相加_Linux_Unix_Awk_Grep - Fatal编程技术网

Linux 使用awk和grep进行相加

Linux 使用awk和grep进行相加,linux,unix,awk,grep,Linux,Unix,Awk,Grep,如果我有这样一个文件: 23.00 33.44 abcd 44.44 abcd12345abcd 33.00 22.22 qt 44.00 zlkm12345ksda ……我想把第一列加起来,当我在第五栏的模式中间遇到12345的时候,我会怎么做呢? < P>这是什么? awk '$5 ~ /12345/ { TOT = TOT + $1 } END { print TOT + 0 }' yourFile.txt (不是在电脑上,所以我的语法可能有点不正确。) 第一位选择您想

如果我有这样一个文件:

23.00   33.44 abcd 44.44  abcd12345abcd
33.00   22.22 qt   44.00  zlkm12345ksda

……我想把第一列加起来,当我在第五栏的模式中间遇到12345的时候,我会怎么做呢?

< P>这是什么?

awk '$5 ~ /12345/ { TOT = TOT + $1 } END { print TOT + 0 }' yourFile.txt
(不是在电脑上,所以我的语法可能有点不正确。)

第一位选择您想要的行并更新总数,而最后一位只打印累积的行数

不需要grep(对于几乎所有的意图和目的,awk即使不是更好也一样好),并且搜索仅限于您想要搜索的列。

类似这样的内容

awk '$5 ~ /12345/ { TOT = TOT + $1 } END { print TOT + 0 }' yourFile.txt
(不是在电脑上,所以我的语法可能有点不正确。)

第一位选择您想要的行并更新总数,而最后一位只打印累积的行数


不需要grep(对于几乎所有的意图和目的,awk即使不是更好也一样好),并且搜索仅限于要搜索的列。

您可能希望在末尾添加
yourFile.txt
或类似内容。您可能希望在末尾打印
TOT+0
,这样,如果没有行匹配且TOT是空字符串,程序将打印
0
,而不是什么都不打印。如何使其打开文件?我知道这很重要basic@Identical:awk默认情况下假定第一个参数是要运行的程序,其他所有参数都是输入文件。您可以使用标志稍微改变该行为,但这是默认设置。请注意,我的答案将整个程序用单引号引起来——整个过程是第一个参数。不要使用所有大写变量名以避免与内置变量名冲突,您可以使用
tot+=1
而不是
tot=tot+1
。您可能希望在末尾添加
yourFile.txt
或类似内容。您可能希望在末尾打印
TOT+0
,这样,如果没有行匹配且TOT是空字符串,程序将打印
0
,而不是什么都不打印。如何使其打开文件?我知道这很重要basic@Identical:awk默认情况下假定第一个参数是要运行的程序,其他所有参数都是输入文件。您可以使用标志稍微改变该行为,但这是默认设置。请注意,我的答案将整个程序用单引号引起来——整个过程是第一个参数。不要使用所有大写变量名以避免与内置变量名冲突,您可以使用
tot+=1
而不是
tot=tot+1