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
。