shell - 处理 awk 结果除以零内的变量
问题描述
我正在使用 awk 编写一个简单的 shell 命令,如下所示:
input_folder='/home/Desktop/files'
results_folder='/home/results'
for entry in $input_folder/*
do
re=$(samtools view -H $entry | grep -P '^@SQ' | cut -f 3 -d ':' | awk '{sum+=$1} END {print sum}')
echo -e "$(samtools depth $entry | awk '{sum+=$3} END { print $(sum/$re)}')\t/$entry" >> $results_folder/Results.txt
done
变量中的结果re
是一个数字,但是使用re
第二个命令的结果print $(sum/$re)}'
给我这个错误
awk: cmd. line:1: (FILENAME=- FNR=312843568) fatal: division by zero attempted
我试图不放$
变量,但也出现同样的错误。
请问有什么帮助吗?
解决方案
将部分更改awk
为:
awk -v re="$re" '{sum+=$3} END { if(re) print sum/re; else print "oo";}'
您必须使用-v
将变量转换为awk
.
而且最好检查是否re
为零。
我曾经oo
代表Infinity symbol
.
推荐阅读
- angular - 如何在编辑内联并仍处于焦点时为 Kendo-Angular 网格格式化货币?
- javascript - 在 Angular 中显示动态过滤的数组
- java - Switch-case在第一次选择后重复使用相同的case,我如何在使用前重置或冲洗它才能正常工作?
- css - 在一行中设置两个宽度相等的折叠列,中间列收缩和增长以适应内容
- angular - Angular 7 - HTML5 Fullscreen API 如何工作?我有很多错误
- azure-devops - 自动构建管道 Salesforce Azure DevOps
- c# - FindViewById 可以在没有 SetContentView 的情况下访问所有布局中的元素
- c# - C# winsta0/winlogon 在 winsta0/custom 中锁定时不会进入最顶层
- terraform - 您可以以及如何在安全/断开连接的环境中使用 Terraform 提供程序?
- javascript - IE11 对象不支持属性或方法“规范化”