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
相关推荐
程序员-Benothing14 分钟前
Vim编辑器从入门到精通:模式、快捷键、配置、插件
linux·运维·服务器
‎ദ്ദിᵔ.˛.ᵔ₎38 分钟前
linux 进程信号 (上)
linux·服务器
15Moonlight1 小时前
Linux网络(02):Socket 编程 UDP
linux·网络·udp
wuminyu2 小时前
ForkJoinPool窃取线程在扫描其他WorkQueue时的随机采样算法与Phase线程挂起唤醒机制解析
java·linux·c语言·jvm·c++
liulilittle2 小时前
Linux 下 select 测试函数
linux·服务器·网络·数据库·c++·select·c
DongQiShanRen2 小时前
玄龙(上):TICK 主循环——意识心跳怎么跳
linux·jvm·数据库·人工智能·数据挖掘·rust
小此方2 小时前
Linux网络(二十一):深入理解 TCP 异常处理:网线断开、Keepalive 保活机制与 Linux 内核传输层协议源码剖析
linux·网络·tcp/ip
pride.li2 小时前
Python 安装
linux·python·ubuntu
笔墨登场说说2 小时前
centos 8 使用 kafka_2.13-4.3.1.tgz 安装kafka
linux·kafka·centos
luo_guibin2 小时前
Linux系统下OpenSSL升级全流程,新旧版本切换
linux·运维·服务器