将 awk 输出通过管道传输到另一个 awk 命令
piping awk outputs into another awk command
我有一个这样的制表符分隔文件:
1 68082 68082 0.003 0.0984 0.0845750981305074 1
1 69428 69428 0.0015 0.0497 0.04367900961171486 1
1 69761 69761 0.0045 0.1034 0.09005130799195755 1
1 69899 69899 0.0106 0.001 0.012825357055808327 1
1 70352 70352 0.0356 0.002 0.04128979333631639 1
1 136113 136113 0.0015 0.0278 0.02540996544374495 1
1 138396 138396 0.0008 0.0089 0.008567211104293392 1
1 872352 872352 0.4955 0.2803 0.48119634372979975 1
1 872467 872467 0.0121 0.004 0.01705890110859077 1
1 872564 872564 0.0015 0.002 0.0034277132094182 1
我想得到第 6 列的总和:
awk -F'[\t]' '{ total += } END { print total }' file
第 7 列的总和:
awk -F'[\t]' '{ total += } END { print total }' file
然后用第6列的总和除以第7列的总和
是否可以在一个命令中完全完成此操作? bash?
中的过程替换之类的东西
如果我们只需要打印第 6 和第 7 个字段的总和,以下 awk
可能会对您有所帮助。
awk '{sum6+=;sum7+=} END{print "Sum of column 6:",sum6 RS "sum of column 7:",sum7;print "Divide of sum6 and sum7",sum6/sum7}' Input_file
输出如下。
Sum of column 6: 0.808081
sum of column 7: 10
Divide of sum6 and sum7 0.0808081
编辑: 解决方案 2: 添加一种非线性形式的解决方案以及 Ed Morton 爵士的建议,其中包括第 7 列总和为 0
的逻辑,那么它不会在输出中引发错误。
awk '{
sum6+=;
sum7+=
}
END{
print "Sum of column 6:",sum6 ORS "sum of column 7:",sum7;print "Divide of sum6 and sum7",sum7?sum6/sum7:"you are trying to divide with a 0, seems sum7 is zero."
}' Input_file
我有一个这样的制表符分隔文件:
1 68082 68082 0.003 0.0984 0.0845750981305074 1
1 69428 69428 0.0015 0.0497 0.04367900961171486 1
1 69761 69761 0.0045 0.1034 0.09005130799195755 1
1 69899 69899 0.0106 0.001 0.012825357055808327 1
1 70352 70352 0.0356 0.002 0.04128979333631639 1
1 136113 136113 0.0015 0.0278 0.02540996544374495 1
1 138396 138396 0.0008 0.0089 0.008567211104293392 1
1 872352 872352 0.4955 0.2803 0.48119634372979975 1
1 872467 872467 0.0121 0.004 0.01705890110859077 1
1 872564 872564 0.0015 0.002 0.0034277132094182 1
我想得到第 6 列的总和:
awk -F'[\t]' '{ total += } END { print total }' file
第 7 列的总和:
awk -F'[\t]' '{ total += } END { print total }' file
然后用第6列的总和除以第7列的总和
是否可以在一个命令中完全完成此操作? bash?
中的过程替换之类的东西如果我们只需要打印第 6 和第 7 个字段的总和,以下 awk
可能会对您有所帮助。
awk '{sum6+=;sum7+=} END{print "Sum of column 6:",sum6 RS "sum of column 7:",sum7;print "Divide of sum6 and sum7",sum6/sum7}' Input_file
输出如下。
Sum of column 6: 0.808081
sum of column 7: 10
Divide of sum6 and sum7 0.0808081
编辑: 解决方案 2: 添加一种非线性形式的解决方案以及 Ed Morton 爵士的建议,其中包括第 7 列总和为 0
的逻辑,那么它不会在输出中引发错误。
awk '{
sum6+=;
sum7+=
}
END{
print "Sum of column 6:",sum6 ORS "sum of column 7:",sum7;print "Divide of sum6 and sum7",sum7?sum6/sum7:"you are trying to divide with a 0, seems sum7 is zero."
}' Input_file