1

在 bash 中,我试图用小数(带分数)的数字编写条件。然后我发现我不能在 bash 中做小数。我拥有的脚本如下:

 a=$(awk '/average TM cross section = / {CCS=$6}; END {printf "%15.4E \n",CCS}' ${names}_$i.out)
 a=$(printf '%.2f\n' $a)
 echo $a

*.out文件中,数字采用科学计数法。最后,echo $a我得到一个数字 245.35(或我文件中的其他数字)。所以,我想知道如何将输出编号 245.35 更改为 24535,以便我可以在 bash 中执行条件。

我试图乘以,显然没有用。任何人都可以帮助进行这种转换吗?

4

3 回答 3

1

根据我们的扩展对话

 a=$(awk '/average TM cross section = / {CCS=$6}; END {printf "%15d\n",CCS * 100}' ${names}_$i.out)

现在你的输出将是一个整数。

请注意,awk 设计用于处理大文件和测试逻辑。您的所有/大部分处理都可能在一个 awk 进程中完成。如果您正在处理大量数据,则可以节省大量时间。

我希望这有帮助。

于 2012-05-01T00:34:27.740 回答
1

除了算术之外,你最好使用其他东西bash——调用一些更强大的东西。您可能会发现以下链接既鼓舞人心又令人恐惧:http ://blog.plover.com/prog/bash-expr.html (“shell 脚本中的算术表达式”)和http://blog.plover.com/prog/ spark.html ("bash 中的疯狂计算"); 如果您认真尝试进行基于 bash 的算术,恐怕这就是您最终可能会遇到的事情。特别是,to_rational第二篇文章中的函数包括一些使用正则表达式拆分小数的代码,尽管他用它们做的事情比听起来更复杂。

于 2012-04-30T21:35:46.297 回答
0

根据您提供的信息,这与任何算术运算无关。

把它当作字符串。找到小数点并将其删除。这就是我的理解

http://www.cyberciti.biz/faq/unix-linux-replace-string-words-in-many-files/

http://www.thegeekstuff.com/2010/07/bash-string-manipulation/

于 2012-04-30T21:34:35.857 回答