Linux/ubuntu AWK / BEGIN / END的用法

版权声明: https://blog.csdn.net/frank_ldw/article/details/86534675

https://blog.csdn.net/frank_ldw/article/details/86534675

BEGIN和END:

在Unix awk中两个特别的表达式,BEGIN和END,这两者都可用于pattern中(参考前面的awk语法),提供BEGIN和END的作用是给程序赋予初始状态和在程序结束之后执行一些扫尾的工作。

任何在BEGIN之后列出的操作(在{}内)将在Unix awk开始扫描输入之前执行,而END之后列出的操作将在扫描完全部的输入之后执行。因此,通常使用BEGIN来显示变量和预置(初始化)变量,使用END来输出最终结果

换句话说:BEGIN后面{}的先执行,执行结果由END后{}输出。

password.lst

root@lidw:~# cat password.lst
1:192.168.88.128:22:root:toor:虚拟机web服务器
2:192.168.88.130:22:ca0gu0:toor:虚拟机mysql数据库服务器
103:192.168.88.4:22:root:sellercube:本地开发服务器

root@lidw:~# awk 'BEGIN {FS=":"} {printf("%3s | %15s | %s\n",$1,$2,$6)}' ./password.lst
  1 |  192.168.88.128 | 虚拟机web服务器
  2 |  192.168.88.130 | 虚拟机mysql数据库服务器
103 |    192.168.88.4 | 本地开发服务器
或者:

root@lidw:~# cat password.lst | awk 'BEGIN {FS=":"} {printf("%3s | %15s | %s\n",$1,$2,$6)}'
  1 |  192.168.88.128 | 虚拟机web服务器
  2 |  192.168.88.130 | 虚拟机mysql数据库服务器
103 |    192.168.88.4 | 本地开发服务器

例:累计销售文件xs中的销售金额(假设销售金额在记录的第三字段):
$awk
'BEGIN { FS=":";print "统计销售金额";total=0}
{print $3;total=total+$3;}
END {printf "销售金额总计:%.2f",total}' sx


注意:BEGIN之前和END之后需要‘’(单引号)

awk 'BEGIN {*********} END{***********}'


 

猜你喜欢

转载自blog.csdn.net/frank_ldw/article/details/86534675
今日推荐