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
相关推荐
orion574 小时前
Missing Semester Class1:course overview and introduction of shell
linux
用户1204872216111 小时前
Linux驱动编译与加载
linux·嵌入式
用户8055336980317 小时前
Input 子系统架构:Core、Handler、Driver 三层是怎么协作的
linux·嵌入式
用户8055336980317 小时前
RK-Forge外设系列开篇 - 把板子从「能启动」变成「能用」:Ethernet/SPI/MMC 三个纯接线外设
linux·github·嵌入式
七歌杜金房1 天前
我终于又有了自己的 Linux 电脑
linux·debian·mac
tntxia2 天前
linux curl命令详解_curl详解
linux
扛枪的书生2 天前
Linux 网络管理器用法速查
linux
顺风尿一寸2 天前
Java Socket 内核之旅:从 SocketChannel.read() 到 tcp_recvmsg 与 epoll 的完整调用链路
linux
XIAOHEZIcode3 天前
Ubuntu 终端美化全栈指南:Bash 到 Kitty 踩坑实录
linux·ubuntu·命令行
唐青枫3 天前
别再只会用 cron:Linux systemd Timer 定时任务实战详解
linux