【发布时间】:2019-01-12 04:22:46
【问题描述】:
有没有办法在 awk 中将字符串计算为数学表达式?
balter@spectre3:~$ echo "sin(0.3) 0.3" | awk '{print $1,sin($2)}'
sin(0.3) 0.29552
我想知道一种将第一个输入也评估为 0.29552 的方法。
【问题讨论】:
-
使用这个
echo "sin(0.3) 0.3" | awk '{match($1,/\(.*\)/);print sin(substr($1,RSTART+1,RLENGTH-1)),sin($2)}'怎么样 :) 我知道你想把它作为一个数学表达式传递(我现在还不知道,正在寻找文档),想一个有趣的方式来玩用这个。 -
嗯,网上流传着 Kenny McCormack 和 Alan Linton 的
calc3awk 脚本的扩展版本,这里有一个链接:groups.google.com/forum/#!topic/comp.lang.awk/C4SbutsY1JA 原版calc3仅支持基本操作,但链接的人似乎可以处理罪恶等。 -
echo "sin(0.3)" | awk -f calc3.awk产生sin(0.3) = 0.29552 -
echo "sin(0.3) 0.3" | perl -ne ' /(\S+)\s+(\S+)/ and print eval($1), " ", $2 '也可以..