我知道通常你不希望单行/单指令变得太长,但似乎偶尔会出现一个冗长的单行程序,它可以通过用函数替换重复元素而受益。
是否可以使用短命令来缩短命令的长度?
例如,我的知识内置到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}'
你能将这些功能合并到一个衬里吗?
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
...对于圆函数将是
$ tail money.data
122 133 137 155
132 141 13 79
31 149 34 85
我玩随机awk语句,但无法弄清楚如何将这些功能合并到一个内容中......
答案 0 :(得分:3)
只需在函数中使用return语句:
function round(a){return (a < int(a)+0.5) ? int(a) : int(a+1)}
{for (f=1;f<=NF;f++) print round($f)}
函数由值而不是引用调用,因此变量值的更改不会影响调用者的变量。