ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2019-12-09 04:50:40  阅读:217  来源: 互联网

标签:awk scripting linux function


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

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

例如,据我所知,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)}

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

标签:awk,scripting,linux,function
来源: https://codeday.me/bug/20191209/2096677.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有