一、awk求和为空显示0
在实际应用中,经常会遇到需要进行文件数值求和的情况。而在awk中,求和的函数为sum,使用方法为:
awk '{sum+=$1} END {print sum}' file.txt
可能会出现file.txt中不存在数值的情况,此时awk会输出不知道的结果,而这无疑会影响程序的正确性。因此,我们可以在求和前加一个if判断,当文件为空时,输出0。代码如下:
awk '{if(NR==1)sum=0;sum+=$1} END {if(NR==0)print "0";else print sum}' file.txt
当文件为空时,程序会输出0,避免了结果不确定的情况。
二、awk求和取消科学记数法
在Linux中,如果输出结果太大,会自动使用科学记数法输出。这在输出结果需要进行进一步计算时,会产生困扰。因此,我们需要取消科学记数法,输出实际数值。
awk '{sum+=$1} END {printf "%.0f",sum}' file.txt
在printf中,%.0f的含义是保留小数点后0位,这样就可以输出实际数值。
三、awk求和为空添加0
在文件中,有些行是空行,这些空行无法直接相加,而更改文件很麻烦。我们可以在awk中,将空行的值默认为0,再进行求和。代码如下:
awk '{if($1!=""){sum+=$1}else{sum+=0}} END {print sum}' file.txt
当行不为空时,将数值累加;当行为空时,将默认数值0累加。
四、awk求和sum
awk中,提供了一个内嵌变量sum,提供了快速求和的方式。使用方法和变量名均为sum,代码如下:
awk '{sum+=$1} END {print sum}' file.txt
相较于手动累加,使用内嵌变量sum的方式更为简便。
五、求kcrwf等于ak
在awk中,我们可以将一个值赋给变量,方便后续进行操作。在下例中,我们需要对$kcrwf的值进行变换,使其等于$ak。代码如下:
awk '{$kcrwf=$ak} {sum+=$kcrwf} END {print sum}' file.txt
在对变量进行赋值后,我们使用$kcrwf进行操作即可。值得注意的是,当进行赋值操作后,需要在同一行进行操作,否则赋值无效。
六、awk求和显示0
当文件中并不存在需要求和的数值时,awk会将结果默认输出为空。但是,在某些场景下,我们需要将空值显示为0,此时,我们可以加一个if语句进行判断。代码如下:
awk '{sum+=$1} END {if(sum==""){printf "0"}else{print sum}}' file.txt
当sum为””时,输出0;否则输出sum。这样做的好处是,无论sum是否为空,都可以把控输出结果。
七、linux awk求和
awk本身就是一款强大的文本处理工具,在Linux中使用也十分广泛。对于求和操作而言,Linux中的awk同样对于数字类型做了充足的支持。使用方法与Linux awk类似,只是将$0换成实际的数字,即可完成求和操作。代码如下:
echo "1 2 3 4 5" | awk '{sum+=$1} END {print sum}'
在控制台中输入一连串数字,使用管道传入awk中,然后求和输出结果。与Linux awk相比,调用方式更为简便。
八、awk获取指定字符串
在awk中,我们可以使用$0获取整行的值,使用$1获取第一个值。但是,当我们需要获取一个字符串中的一部分时,我们需要使用substr函数。substr函数的使用方法为:
awk '{print substr($0,2,3)}' file.txt
整个substr函数分为三个参数,第一个参数表示字符串本身,第二个参数表示开始的位置,第三个参数表示结束的位置。例如上式中的substr($0,2,3),表示从字符串$0的第二位开始,往后取3个字符。
九、awk数组打印for循环
在awk中,我们可以使用数组对数据进行分析,同时使用for循环打印分析结果。使用数组时,我们可以将每个值存入数组中,使用for循环进行输出。
awk '{counts[$1]++} END {for(word in counts){print word,counts[word]}}' file.txt
上式中,我们使用counts数组存储行中每个值出现的次数。然后,在使用for循环遍历counts数组,输出结果。这样,我们就可以清晰地看到每个值出现的次数。
十、awk正则表达式匹配数字
在实际应用中,我们可能只需要对文件中指定格式的数字进行求和。此时,我们可以使用正则表达式匹配指定格式的数字,再进行求和。
awk '{for(i=1;i<=NF;i++){if($i~/^[0-9]+(\.[0-9]+)?$/){sum+=$i}}} END {print sum}' file.txt
上式中,我们使用for循环匹配每个单元格中是否符合正则表达式格式,再进行累加。正则表达式的含义是:数字的整数部分可以使用0~9中任意数字,小数部分使用.开头加任意数字。即匹配任意数值的格式。并且在匹配过程中避免了不合法字符的出现,增加了程序的稳健性。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/239342.html