当前位置:网站首页>awk语法-02-运算、数组、格式化输出
awk语法-02-运算、数组、格式化输出
2022-08-03 18:57:00 【开发运维玄德公】
文章目录
1. 比较运算
1.1 说明
| 符号 | 说明 |
|---|---|
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
| == | 等于 |
| != | 不等于 |
| ~ | 匹配 |
| !~ | 非匹配 |
1.2 示例
查看普通用户
即id号大于等于1000的用户
[[email protected] ~]# awk -F: '$3>=1000{print $1,$3}' /etc/passwd
cloud_user 1000
liubei 1001
guanyu 1002
查看非root用户
id非0的用户
[[email protected] ~]# awk -F : '$1!="root"{print $1,$3}' /etc/passwd
bin 1
daemon 2
adm 3
lp 4
……
liubei 1001
guanyu 1002
guanping 1003
匹配
[[email protected] ~]# awk -F : '$1~"uan"{
print $1,$3}' /etc/passwd
guanyu 1002
guanping 1003
匹配支持正则
- 包含
guan.*g的用户
[[email protected] ~]# awk -F : '$1~"guan.*g"{print $1,$3}' /etc/passwd
guanping 1003
- 以
l开头的用户
[[email protected] ~]# awk -F : '$1~"\\<l.*"{print $1,$3}' /etc/passwd
lp 4
liubei 1001
2. 算术运算
2.1 说明
| 符号 | 说明 |
|---|---|
| + | 加 |
| - | 减 |
| * | 乘 |
| / | 除 |
| % | 取余 |
| ^ | 幂 |
2.2 示例(打印奇数id的用户)
[[email protected] ~]# 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)
[[email protected] ~]# 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]
}
- 执行
[[email protected] ~]# ./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]
}
- 执行
[[email protected] ~]# ./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
}
}
- 执行
[[email protected] ~]# ./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

边栏推荐
- How does MySQL permanently support Chinese input once and for all?
- 首届MogDB征文活动开启啦!
- Don't look down upon the WebSocket!Long connection, stateful, two-way, full-duplex king is Fried
- Shell编程案例
- Online monitoring of UPS power supply and operating environment in the computer room, the solution is here
- Mock模拟数据,并发起get,post请求(保姆级教程,一定能成功)
- Chrome浏览器开发新截图工具,安全浏览器截图方法
- C#将位图旋转90度
- G6尝试 学习
- WEB 渗透之CSRF
猜你喜欢

Shell:循环语句

Don't look down upon the WebSocket!Long connection, stateful, two-way, full-duplex king is Fried

H.265网页播放器EasyPlayer获取视频流正常,但是播放出现黑屏是什么原因?

智能合约安全——delegatecall (2)

Jenkins CI平台(二)

EasyNTS上云网关断电重启后设备离线是什么原因?

MySQL超详细安装教程 手把手教你安装MySQL到使用MySQL 最简单的MySQL安装方式,这种方式装,卸载也简单

Bytes to beat three sides take offer: network + GC + + IO + redis + JVM red-black tree + data structure, to help you quickly into the giant!!!!!

Confused!Ali was abused on the one hand, but was fortunate to be promoted to Huawei's technology, and successfully got the offer, with an annual salary of 40w

WEB 渗透之RCE
随机推荐
梅科尔工作室-14天华为培训六
vulnhub pyexp: 1
异常与智能指针
MySQL如何一劳永逸的永久支持输入中文
VsCode预览Geojson数据
2022/08/02------丑数
MySQL——增删改查进阶
Postgresql 备份大小情况!
懵逼!阿里一面被虐了,幸获内推华为技术四面,成功拿到offer,年薪40w
在线监控机房内的UPS电源及运行环境,解决方案来了
Mkke:为什么无法从Oracle 11g或12c升级到Oracle 23c?
国产虚拟化云宏CNware WinStack安装体验-5 开启集群HA
dd命令:用于读取、转换并输出数据
不要小看 WebSocket!长连接、有状态、双向、全双工都是王炸技能
【汇编语言02】第2章 寄存器——理论知识
Chrome浏览器开发新截图工具,安全浏览器截图方法
BinaryIndexedTrees树状数组
VsCode preview Geojson data
红日安全内网渗透靶场-VulnStack-1
MySQL读写分离的三种实现方案