Linux 如何在Awk一行程序/单个命令中包含短函数?

Linux 如何在Awk一行程序/单个命令中包含短函数?,linux,scripting,function,awk,Linux,Scripting,Function,Awk,我知道,通常情况下,您不希望一行程序/单个命令变得太长,但似乎偶尔会有一个较长的一行程序,它将受益于用函数替换重复元素 是否可以使用短函数缩短命令的长度 例如,据我所知,awk中没有上限或圆形函数,所以您可以编写函数 'function round(a){a=(a < int(a)+0.5) ? int(a) : int(a+1)}' 你能把这些函数合并成一行吗 e、 g 你能在脚本中使用它来获得文件的上限吗 $ cat money.data 121.52 133.45 136.77 1

我知道,通常情况下,您不希望一行程序/单个命令变得太长,但似乎偶尔会有一个较长的一行程序,它将受益于用函数替换重复元素

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

例如,据我所知,awk中没有上限或圆形函数,所以您可以编写函数

'function round(a){a=(a < int(a)+0.5) ? int(a) : int(a+1)}'
你能把这些函数合并成一行吗

e、 g

你能在脚本中使用它来获得文件的上限吗

$ 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
…对于round函数来说

$ 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)}
函数取整(a){返回(afunction round(a){return (a < int(a)+0.5) ? int(a) : int(a+1)}
{for (f=1;f<=NF;f++) print round($f)}