【问题标题】:How to overcome "(FILENAME=- FNR=1) fatal: division by zero attempted" error in awk如何克服 awk 中的“(文件名 = - FNR = 1)致命:除零尝试”错误
【发布时间】:2021-01-27 17:10:26
【问题描述】:

我有一个 10 列的文本文件,我需要对其进行一些数学处理。 例如,当我发出以下命令时

cat case.dat | awk '{print ($1-0.777472), ($1*$2*$3*$4)/($10)}'

然后我得到以下错误

awk: cmd. line:1: (FILENAME=- FNR=1) fatal: division by zero attempted

并且脚本没有给出任何输出。

这意味着我在$8 中有一些zero's,因此我遇到了错误。如何使用简单的 awk 命令解决此问题?

【问题讨论】:

  • /($10)I have some zero's in $8 为什么在 $8 中? How I can overcome this不干吗?你如何“克服”它?
  • 10 是一个可以相乘的数字。我已经更新它以避免任何混淆
  • 它没有打印任何值并且命令失败并出现提及错误。
  • $10 为零时要打印什么值?
  • 使用awk '{print ($1-0.777472), ($10 ? ($1*$2*$3*$4)/$10 : 0)}' case.dat

标签: awk


【解决方案1】:

将我的评论转换为答案,以便将来的访问者轻松找到解决方案。

为了避免fatal: division by zero 错误,在尝试除法之前检查$10 是否非零:

awk '{print ($1-0.777472), ($10 ? ($1*$2*$3*$4)/$10 : 0)}' case.dat

【讨论】:

    猜你喜欢
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    相关资源
    最近更新 更多