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
相关推荐
wj3055853781 小时前
课程 9:模型测试记录与 Prompt 策略
linux·人工智能·python·comfyui
abigriver2 小时前
打造 Linux 离线大模型级语音输入法:Whisper.cpp + 3090 显卡加速与 Rime 中英混输终极调优指南
linux·运维·whisper
wangqiaowq2 小时前
windows下nginx的安装
linux·服务器·前端
YYRAN_ZZU3 小时前
Petalinux新建自动脚本启动
linux
charlie1145141913 小时前
嵌入式Linux驱动开发pinctrl篇(1)——从寄存器到子系统:驱动演进之路
linux·运维·驱动开发
于小猿Sup3 小时前
VMware在Ubuntu22.04驱动Livox Mid360s
linux·c++·嵌入式硬件·自动驾驶
cen__y3 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git
不仙5205 小时前
VMware Workstation 26.0.0 在 Ubuntu 24.04 (内核 6.17.0) 上的安装与内核模块编译问题
linux·ubuntu·elasticsearch
AI视觉网奇6 小时前
linux 检索库 判断库是否支持
java·linux·服务器
dapeng-大鹏6 小时前
KVM+LVM 零停机在线扩容 Ubuntu 根分区:从磁盘添加到逻辑卷扩展完整
linux·运维·ubuntu·磁盘空间扩展