Shell三剑客:awk(模式(正则表达式)和动作)

一、运算符

|-----------------------------|------------------|
| = += -= *= /= %= ^= **= | 赋值 |
| ?: | C条件表达式 |
| || | 逻辑或 |
| && | 逻辑与 |
| ~ 和 !~ | 匹配正则表达式和不匹配正则表达式 |
| < <= > >= != == | 关系运算符 |
| 空格 | 连接 |
| + - | 加,减 |
| * / % | 乘,除与求余 |
| + - ! | 一元加,减和逻辑非 |
| ^ *** | 求幂 |
| ++ -- | 增加或减少,作为前缀或后缀 |
| $ | 字段引用 |
| in | 数组成员 |

二、示例

cs 复制代码
#过滤第一列大于2的行
[root@localhost ~]# awk '$1>2' log.txt 
3 Are you like awk
This's a test
10 There are orange,apple,mongo

#过滤第一列等于2的行
[root@localhost ~]# awk '$1==2 {print $1,$3}' log.txt 
2 is

#过滤第一列大于2并且第二列等于'Are'的行
[root@localhost ~]# awk '$1>2 && $2=="Are" {print $1,$2,$3}' log.txt 
3 Are you


[root@localhost ~]# awk -F: '$3 == 0' passwd.txt 
root:x:0:0:root:/root:/bin/bash

[root@localhost ~]# awk -F: '$3 < 10' passwd.txt 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

[root@localhost ~]# awk -F: '$3 < 5' passwd.txt 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

[root@localhost ~]# awk -F: '$NF == "/bin/bash"' passwd.txt 
root:x:0:0:root:/root:/bin/bash

[root@localhost ~]# awk -F: '$1 == "root"' passwd.txt 
root:x:0:0:root:/root:/bin/bash

[root@localhost ~]# awk -F: '$1 ~ /roo/' passwd.txt 
root:x:0:0:root:/root:/bin/bash

[root@localhost ~]# awk -F: '$1 !~ /roo/' passwd.txt 
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin10

[root@localhost ~]# df -P | grep '/' | awk '$4 > 25000'
devtmpfs                 485816       0  485816   0% /dev
tmpfs                    497836       0  497836   0% /dev/shm
tmpfs                    497836   13968  483868   3% /run
tmpfs                    497836       0  497836   0% /sys/fs/cgroup
/dev/mapper/centos-root 6486016 1898056 4587960  30% /
/dev/sda1               1038336  140336  898000  14% /boot
tmpfs                     99568       0   99568   0% /run/user/0
相关推荐
zylyehuo3 小时前
Linux 彻底且安全地删除文件
linux
用户8055336980316 小时前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约
linux·嵌入式
用户0340952979116 小时前
linux fcitx 5 雾凇拼音 设置在中文输入法下仍然输入英文标点
linux
Web3探索者2 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo3 天前
Linux系统中网线与USB网络共享冲突
linux
Sokach10154 天前
Linux Shell 脚本从零到能用:一个新手的一天学习总结
linux
AlfredZhao4 天前
Docker 容器时区不对,`timedatectl` 不存在怎么办?
linux·timezone
zzzzzz3106 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode6 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
A小辣椒8 天前
TShark:Wireshark CLI 功能
linux