快捷手册06linux三剑客之awk

快捷手册awk

命令模版

awk ‘条件1 {动作 1} 条件 2 {动作 2} …’ 文件名
举例:awk -F ‘:’ ‘{ print $1 }’ demo.txt

条件类型

条件类型条 件说 明
awk保留字BEGIN在 awk 程序一开始,尚未读取任何数据之前执行。BEGIN 后的动作只在程序开始时执行一次
awk保留字END在 awk 程序处理完所有数据,即将结束时执行?END 后的动作只在程序结束时执行一次
关系运算符>大于
关系运算符<小于
关系运算符>=大于等于
关系运算符<=小于等于
关系运算符==等于。用于判断两个值是否相等。如果是给变童赋值,则使用”=”
关系运算符!=不等于
关系运算符A~B判断字符串 A 中是否包含能匹配 B 表达式的子字符串
关系运算符A!~B判断字符串 A 中是否不包含能匹配 B 表达式的子字符串
正则表达式/正则/如果在“//”中可以写入字符,则也可以支持正则表达式
逻辑运算符&&逻辑与
逻辑运算符||逻辑或

变量

参数含义
NF当前行有多少个字段,因此$NF代表最后一个字段。 $(NF-1)倒数第二个字段
NR当前处理的是第几行。举例:awk -F ‘:’ ‘{print NR “) “ $1}’ demo.txt
FILENAME当前文件名
FS字段分隔符,默认是空格和制表符。
RS行分隔符,用于分割每一行,默认是换行符。
OFS输出字段的分隔符,用于打印时分隔字段,默认为空格。
ORS输出记录的分隔符,用于打印时分隔记录,默认为换行符。
OFMT数字输出的格式,默认为%.6g。

函数

举例:awk -F ‘:’ ‘{ print toupper($1) }’ demo.txt

参数含义
tolower()字符转为小写。
length()返回字符串长度。
substr()返回子字符串。
sin()正弦。
cos()余弦。
sqrt()平方根。
rand()随机数。
## 条件
列打印
1
2
# 每行按空格或TAB分割,输出文本中的1、4项
$ awk '{print $1,$4}' log.txt
直接行过滤
1
2
# 过滤第一列大于2的行
$ awk '$1>2' log.txt #命令

行条件过滤+列打印

1
2
# 过滤第一列大于2并且第二列等于'Are'的行
$ awk '$1>2 && $2=="Are" {print $1,$2,$3}' log.txt #命令

使用正则,字符串匹配

1
2
# 输出第二列包含 "th",并打印第二列与第四列
$ awk '$2 ~ /th/ {print $2,$4}' log.txt

~ 表示模式开始。// 中是模式。

三元表达式
三元运算的语法: 条件 ? 结果1:结果2

awk允许指定输出条件,只输出符合条件的行。

1
2
3
4
awk -F ':' '/usr/ {print $1}' demo.txt  # print命令前面是一个正则表达式,只输出包含usr的行。  
awk -F ':' 'NR % 2 == 1 {print $1}' demo.txt # 输出奇数行
awk -F ':' 'NR >3 {print $1}' demo.txt # 输出第三行以后的行
awk -F ':' '$1 == "root" || $1 == "bin" {print $1}' demo.txt # 输出第一个字段等于指定值的行。

if 语句

1
2
awk -F ':' '{if ($1 > "m") print $1}' demo.txt # 输出第一个字段的第一个字符大于m的行。
awk -F ':' '{if ($1 > "m") print $1; else print "---"}' demo.txt # if else 结构

参考

Linux awk用法:https://blog.51cto.com/13438667/2096206
Linux awk用法:https://blog.51cto.com/13438667/2096206:c.biancheng.net/view/992.html
awk 入门教程:www.ruanyifeng.com/blog/2018/11/awk.html
Linux awk 命令:https://www.runoob.com/linux/linux-comm-awk.html

快捷手册系列
快捷手册01正则表达式
快捷手册02git
快捷手册03vim
快捷手册04docker
快捷手册05linux三剑客之grep
快捷手册06linux三剑客之awk
快捷手册07linux三剑客之sed
快捷手册08nginx
快捷手册09mysql
快捷手册10redis
快捷手册11mongodb
快捷手册12sqlite

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×