gpt4 book ai didi

awk 和 log2 划分

转载 作者:行者123 更新时间:2023-12-04 05:20:58 28 4
gpt4 key购买 nike

我有一个制表符分隔的文件,看起来像这样:

foo 0 4

boo 3 2

blah 4 0

flah 1 1

我正在尝试计算每行两列之间的 log2。我的问题是除以零
我试过的是这样的:
cat file.txt | awk -v OFS='\t' '{print $1, log($3/$2)log(2)}' 

当分母为零时,awk 将崩溃。我想要做的是某种条件语句,当分母等于 0 时,它会打印一个“inf”作为结果。

我真的不知道该怎么做?
任何帮助将不胜感激
谢谢

最佳答案

您可以按如下方式实现(进行一些额外的调整):

awk 'BEGIN{OFS="\t"} {if ($2==0) {print $1, "inf"} else {print $1, log($3/$2)log(2)}} file.txt

说明:
  • if ($2==0) {print $1, "inf"} else {...} - 首先检查第二个字段 ( $2 ) 是否为零。如果是这样,打印 $1inf并移至下一行;否则照常进行。
  • BEGIN{OFS="\t"} - 套装OFS在 awk 脚本中;主要是偏好的东西。
  • ... file.txt - 当您将其指定为参数时,awk 可以从文件中读取;这节省了 cat 进程的使用。 (见 UUCA)
  • 关于awk 和 log2 划分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13687657/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com