使用awk跳过末尾指定数值并求和的纯awk实现方案
纯awk实现跳过末尾指定数量数值后的求和
核心单行命令
假设要跳过末尾8个数值,目标文件为data.txt,执行以下命令:
awk -v skip=8 '{arr[NR]=$0} END{for(i=1;i<=NR-skip;i++) sum+=arr[i]; printf "%.4f\n", sum}' data.txt
命令解析
-v skip=8:通过变量skip指定需要跳过的末尾数值数量,可根据需求修改数值{arr[NR]=$0}:将文件中每一行的数值存入数组arr,NR(当前行号)作为数组的下标END{...}:所有行处理完成后执行后续逻辑for(i=1;i<=NR-skip;i++) sum+=arr[i]:遍历数组中前NR-skip个元素(即跳过末尾skip个值),累加计算总和printf "%.4f\n", sum:按4位小数格式输出计算结果,与示例中的格式匹配
健壮性优化(可选)
如果需要处理总行数小于跳过数量的场景(避免循环逻辑出错),可添加判断:
awk -v skip=8 '{arr[NR]=$0} END{if(NR>skip){for(i=1;i<=NR-skip;i++) sum+=arr[i]} else sum=0; printf "%.4f\n", sum}' data.txt
当文件总行数小于等于skip时,直接输出0(可根据实际需求调整默认值)
内容的提问来源于stack exchange,提问作者Nikola
相关产品推荐
相关产品推荐

