awk概念
awk即可进行模式扫描 也是一种处理文件语言
擅长对列的处理能做到排除,查询,替换,统计信息
awk语法:awk 参数 '模式{动作} 文件'
参数:
-F
指定分割符号 awk -F "[: ]+"
定义:和空格为串联的分隔符
-v
指定变量 -v "i=10"
awk命令调用命令时不用1添加任何符号
- 符号意义:
$n
匹配第n列信息
$0
代表所有列
$NF
代表最后一列
$n~/xxx/
匹配第n列xx字符串信息
;
分开处理不同任务
!
取反
" "
代表空格 其中可插入内容
~
在awk中代表匹配后方信息
,
代表空格 - 动作
print
输出指定内容
gsub
替换指定内容 - 内置变量
NR==n
匹配n行
NR==n,NR==m
匹配n-m行
NR<或>n
显示n+或n-行
NR==n:NR==m
匹配n和m行
FS=[; ]
修改分隔符 和-v配合使用 - 命令模式
BEGIN 处理文件前,执行什么动作
awk 'BEGIN{动作}{动一动} 文件'
END 处理文件后,执行什么动作
awk '/匹配信息/{i=i+1}END{print i}' 文件地址
- 运算用公式
i=i+1或i++
计算匹配内容个数
例awk '/匹配信息/{i=i+1}END{print i}' 文件地址
i=i+$n
文件求和运算公式
例'{x=x+$}END{print x}'
awk实际应用
环境
[root@zin ~]# cat reg.txt
Zhang Dandan 41117397 :250:100:175
Zhang Xiaoyu 390320151 :155:90:201
Meng Feixue 80042789 :250:60:50
Wu Waiwai 70271111 :250:80:75
Liu Bingbing 41117483 :250:100:175
Wang Xiaoai 3515064655 :50:95:135
Zi Gege 1986787350 :250:168:200
Li Youjiu 918391635 :175:75:300
Lao Nanhai 918391635 :250:100:175
实际操作参考
01. 显示xiaoyu的姓氏和ID号码
[root@zin ~]# awk '$2~/Xiaoyu/{print $1,$3}' reg.txt
Zhang 390320151
02. 姓氏是zhang的人,显示他的第二次捐款金额及他的名字
[root@zin ~]# awk -F "[: ]+" '$1~/Zhang/{print$1,$2,$5 }' reg.txt
Zhang Dandan 100
Zhang Xiaoyu 90
03. 显示Xiaoyu的捐款,每个时都有以$开头, 如$110$220$330
[root@zin ~]# awk '{gsub(/:/,"$",$4)}$2~/Xiaoyu/{print $4}' reg.txt
$155$90$201
网友评论