math - 如何强制 AWK 将字符串评估为数学表达式?
问题描述
有没有办法在 awk 中将字符串评估为数学表达式?
balter@spectre3:~$ echo "sin(0.3) 0.3" | awk '{print $1,sin($2)}'
sin(0.3) 0.29552
我想知道一种将第一个输入评估为 0.29552 的方法。
解决方案
您可以创建自己的 eval 函数,该函数再次调用 awk 以执行您想要的任何命令:
$ cat tst.awk
{ print eval($1), sin($2) }
function eval(str, cmd,line,ret) {
cmd = "awk \047BEGIN{print " str "; exit}\047"
if ( (cmd | getline line) > 0 ) {
ret = line
}
close(cmd)
return ret
}
$ echo 'sin(0.3) 0.3' | awk -f tst.awk
0.29552 0.29552
$ echo '4*7 0.3' | awk -f tst.awk
28 0.29552
$ echo 'tolower("FOO") 0.3' | awk -f tst.awk
foo 0.29552
推荐阅读
- sql - 具有多个约束 SQL 的跨行的累积天数
- reactjs - 电子邮件链接/重定向后服务人员失败
- c++ - C++ SSE Intrinsics:将结果存储在变量中
- android - 如何正确从 Android POST 到 ASP.NET Core 2.1?
- php - cookie 无法通过 curl 或文件获取内容工作
- python - 通过另一列提取行最大值分组
- javascript - 用于查找现有字符串的搜索栏
我有一个网站可以生成 100 个名字,例如 Joey、Daniel、Ronnie 等。它们不是从数据库生成的,而是类似的
<div class="names">Joey</div>
。我有一个搜索栏
<input type="text" id="Search" onkeyup="myFunction()" placehol
- swift - 在不管理服务器端的情况下使用 IOS 视频聊天 API
- android - Android Studio 3.2 构建失败,由于无法找到请求目标的有效证书路径而导致异常
- c++ - 从捕获的帧中裁剪三角形 - OpenCV 和 C++