awk语法-02-运算、数组、格式化输出

1. 比较运算

1.1 说明

符号说明
>大于
<小于
>=大于等于
<=小于等于
==等于
!=不等于
~匹配
!~非匹配

1.2 示例

查看普通用户

即id号大于等于1000的用户

[root@liubei ~]# awk -F: '$3>=1000{print $1,$3}' /etc/passwd
cloud_user 1000
liubei 1001
guanyu 1002

查看非root用户

id非0的用户

[root@liubei ~]# awk -F : '$1!="root"{print $1,$3}' /etc/passwd
bin 1
daemon 2
adm 3
lp 4
……
liubei 1001
guanyu 1002
guanping 1003

匹配

[root@liubei ~]# awk -F : '$1~"uan"{print $1,$3}' /etc/passwd
guanyu 1002
guanping 1003

匹配支持正则

  • 包含 guan.*g的用户
[root@liubei ~]# awk -F : '$1~"guan.*g"{print $1,$3}' /etc/passwd
guanping 1003
  • l开头的用户
[root@liubei ~]# awk -F : '$1~"\\<l.*"{print $1,$3}' /etc/passwd
lp 4
liubei 1001

2. 算术运算

2.1 说明

符号说明
+
-
*
/
%取余
^

2.2 示例(打印奇数id的用户)

[root@liubei ~]# awk -F: '$3%2==1{print $1,$3}' /etc/passwd
bin 1
adm 3
sync 5
halt 7
operator 11
nobody 99
dbus 81
polkitd 999
postfix 89
liubei 1001
guanping 1003

3. 逻辑运算

3.1 说明

符号说明
&&
||

3.2 示例(打印非系统用户)

即 root(id=0)和普通用户(id>=1000)

[root@liubei ~]# awk -F: '$3==0||$3>=1000{print $1,$3}' /etc/passwd
root 0
cloud_user 1000
liubei 1001
guanyu 1002
guanping 1003

4. 数组

4.1 创建数组

语法

数组名[索引]=

示例

  • 创建 test.awk内容如下
#!/bin/awk -f
BEGIN{
  user[0]="liubei";
  user[1]="guanyu";
  print user[0],user[1]
}
  • 执行
[root@liubei ~]# ./test.awk
liubei guanyu

4.2 删除数组

语法

delete 数组名[索引]

示例

  • 创建test.awk文件如下
#!/bin/awk -f
BEGIN{
  user[0]="liubei";
  user[1]="guanyu";
  delete user[1];
  print user[0],user[1]
}
  • 执行
[root@liubei ~]# ./test.awk
liubei

5. printf 格式化输出

和其他语言没有什么区别,简单示例一下:

接收类型

awk -F: '{printf "%s %s \n", $1,$3}' /etc/passwd

说明: %s 字符型,%d 整数型,%f 浮点型

定义列宽

在接收类型中间可以添加数字表示列宽。

  • 语法示例
awk -F: '{printf "|%20s|%20s\n", $1,$3}' /etc/passwd
  • 执行结果
|                root|                    0
|                 bin|                    1
|              daemon|                    2
|                 adm|                    3
|                  lp|                    4
……

对齐方式

在列宽两侧加-,表示字串靠哪个方向对齐(默认右对齐)。

  • 语法示例
awk -F: '{printf "|%-20s|%-20s\n", $1,$3}' /etc/passwd
  • 执行结果
|root                |0
|bin                 |1
|daemon              |2
|adm                 |3
|lp                  |4
……

完整示例

  • 创建myAwk.awk 文件如下
#!/bin/awk -f
BEGIN{
  FS=":";
  line="============================================";
  printf "|%-20s|%-20s|%-20s\n%s\n","Type","Name","Id",line
}
{

  if($3==0){
    printf "|%-20s|%-20s|%-20s\n","root_user",$1,$3
  }else if($3>=1000){
    printf "|%-20s|%-20s|%-20s\n", "ord_user",$1,$3
  }else{
    printf "|%-20s|%-20s|%-20s\n", "sys_user",$1,$3
  }
}

  • 执行
[root@liubei ~]# ./myAwk.awk /etc/passwd
|Type                |Name                |Id
============================================
|root_user           |root                |0
|sys_user            |bin                 |1
|sys_user            |daemon              |2
|sys_user            |adm                 |3
|sys_user            |lp                  |4
|sys_user            |sync                |5
|sys_user            |shutdown            |6
|sys_user            |halt                |7
|sys_user            |mail                |8
|sys_user            |operator            |11
|sys_user            |games               |12
|sys_user            |ftp                 |14
|sys_user            |nobody              |99
|sys_user            |systemd-network     |192
|sys_user            |dbus                |81
|sys_user            |polkitd             |999
|sys_user            |sshd                |74
|sys_user            |postfix             |89
|sys_user            |chrony              |998
|ord_user            |cloud_user          |1000
|ord_user            |liubei              |1001
|ord_user            |guanyu              |1002
|ord_user            |guanping            |1003

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
第一章 UNIX AWK使用手册(第二版)......................................................................................5 1.1 什么是AWK?...........................................................................................................................5 1.2 为什么使用AWK? ...................................................................................................................5 1.3 AWK的调用方式......................................................................................................................6 1.4 AWK语法:..........................................................................................................................6 1.5 AWK的内置函数......................................................................................................................7 1.6 在命令行使用AWK.................................................................................................................8 1.7 AWK的变量.............................................................................................................................9 1.8 运算与判断:.........................................................................................................................9 1.9 AWK的流程控制......................................................................................................................9 1.10 AWK中的自定义函数.......................................................................................................... 11 1.11 AWK高级输入输出.............................................................................................................. 12 1.12 AWK与SHELL SCRIPT混合编程............................................................................................ 14 1.13 附录:................................................................................................................................ 16 第二章 AWK简介......................................................................................................................... 21 2.1 AWK简介............................................................................................................................... 21 2.2 AWK命令格式和选项............................................................................................................ 21 2.2.1 awk语法有两种形式................................................................................................. 21 2.2.2 命令选项....................................................................................................................... 21 2.3 模式和操作........................................................................................................................... 22 2.3.1 模式.............................................................................................................................. 23 2.3.2 操作.............................................................................................................................. 23 2.4 AWK的环境变量.................................................................................................................... 23 2.5 AWK运算符........................................................................................................................... 24 2.6 记录和域.............................................................................................................................. 24 2.6.1 记录.............................................................................................................................. 24 2.6.2 域.................................................................................................................................. 25 RESOFT 国库信息处理系统(TIPS)EasyMining使用说明书 3 2.6.3 域分隔符....................................................................................................................... 25 2.7 GAWK专用正则表达式元字符............................................................................................... 25 2.8 POSIX字符集....................................................................................................................... 26 2.9 匹配操作符(~) ...................................................................................................................... 26 2.10 比较表达式......................................................................................................................... 26 2.11 范围模板............................................................................................................................. 26 2.12 一个验证PASSWD文件有效性的例子................................................................................. 27 2.13 几个实例............................................................................................................................. 27 2.14 AWK编程............................................................................................................................. 28 2.14.1 变量............................................................................................................................ 28 2.14.2 BEGIN模块................................................................................................................. 28 2.14.3 END模块..................................................................................................................... 28 2.14.4 重定向和管道............................................................................................................. 29 2.14.5 条件语句..................................................................................................................... 30 2.14.6 14.6. 循环..................................................................................................................... 31 2.14.7 数组............................................................................................................................ 31 2.14.8 awk的内建函数........................................................................................................... 32 2.15 HOW-TO................................................................................................................................ 36 第三章 AWK实例......................................................................................................................... 37 3.1 捍卫 AWK ............................................................................................................................. 37 3.2 第一个 AWK.......................................................................................................................... 37 3.3 多个字段.............................................................................................................................. 38 3.4 外部脚本.............................................................................................................................. 39 3.5 BEGIN 和 END 块............................................................................................................... 39 3.6 规则表达式和块................................................................................................................... 40 3.7 表达式和块........................................................................................................................... 40 3.8 条件语句.............................................................................................................................. 40 3.9 数值变量.............................................................................................................................. 41 3.10 字符串化变量..................................................................................................................... 42 RESOFT 国库信息处理系统(TIPS)EasyMining使用说明书 4 3.11 众多运算符......................................................................................................................... 42 3.12 字段分隔符......................................................................................................................... 43 3.13 字段数量............................................................................................................................. 43 3.14 记录号................................................................................................................................ 44 3.15 参考资料............................................................................................................................. 44 3.16 关于作者............................................................................................................................. 44 第四章 AWK简单实例.................................................................................................................. 46 4.1 首先我们要弄清楚几个概念:............................................................................................ 46 4.2 再说一说有关AWK的内部变量:..................................................................................... 49 第五章 AWK详解......................................................................................................................... 54

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玄德公笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值