linux-如何在Awk单行/单命令中包含短函数?

我知道,通常您不希望单行代码/单个命令变得太长,但是似乎偶尔会有一单行代码可以通过用函数替换重复元素而受益.

是否可以使用短函数来缩短命令的长度?

例如,据我所知,awk中没有上限或舍入函数,因此您可以编写函数

'function round(a){a=(a < int(a)+0.5) ? int(a) : int(a+1)}'

'function ceil(a){a=(a == int(a)) ? a : int(a)+1}'

您可以将这些功能整合到一个衬套中吗?

例如

您可以在脚本中使用它来获取文件的上限吗

$cat money.data
121.52 133.45 136.77 155.22
132.11 141.30 12.78 78.98
31.21 149.03 33.50 84.67

…对于天花板函数,应为:

$tail money.data
122 134 137 156
133 142 13 79
32 150 34 85

…而回合函数将是

$tail money.data
122 133 137 155
132 141 13 79
31 149 34 85

我玩了随机的awk语句,但无法弄清楚如何将这些功能合并到一个衬里中.

解决方法:

只需在函数中使用return语句即可:

function round(a){return (a < int(a)+0.5) ? int(a) : int(a+1)}
{for (f=1;f<=NF;f++) print round($f)}

函数是通过值而不是引用来调用的,因此变量值的更改不会影响调用方的变量.

上一篇:android可以执行字符串作为代码吗?


下一篇:vue源码6----update函数