三剑客之 awk
程序员文章站
2022-05-10 08:31:14
...
命令概述
awk --- pattern scanning and processing language
模式扫描(处理文件每一行信息) 过程语言(一门脚本语言 逻辑语句(循环/判断))
作用说明(对文件逐行的读入)
1)擅长对文件列进行操作
2)擅长统计分析数据信息
命令语法结构
awk [参数] '模式{动作信息}' 文件信息
注:
注意大小写
高级用法
1)awk模式概念
普通模式
利用正则进行匹配/利用行号进行匹配/利用字符进行匹配
特殊模式:
1)BEGIN用法
1.在处理文件之前先做的事情 (准备工作)
2.将awk作为计算机使用
3.进行变量设定
2)END用法
1.在处理文件之后要做的事情 (后续工作)
2.输出结果信息
3)统计分析日志公式信息
内置变量
NR --- 表示行号
NF --- 表示字段信息(最后一列)
FS --- 表示分隔符字段信息
普通用法
根据内容
awk '/内容/{print $列数}' 文件名称
根据行号
awk 'NR==行数 {print $列数}' 文件名称
$0 --- 全列
$n --- 第n列
$x,$y --- '逗号'表示第x列到第y列之间有'空格'
$x"空格"$y --- '双引号'表示第x列到第y列之间有'空格'
根据第n列某个信息取出
awk '$n~/信息/{print $列数}' 文件名称
注:
$n!~ — 表示第n列查找出来的信息进行取反
指定某个或多个符号为分隔符进行分列
awk -F '[符号1符号2]+' '{print $列数}' 文件信息
注:
利用-F指定列分隔符, 结合正则可以识别多个分隔符号
对查找出来的信息进行替换
awk '$n~/信息/{gsub(/替换的信息/,"要替换成什么",$n);print $列数}' 文件名称
注:
gsub(/替换的信息/,“要替换成什么”,$n替换的第几列信息)
高级用法
1)BEGIN用法
1.在处理文件之前先做的事情
awk 'BEGIN{print "姓","名","id","金额"}{print $n}' 文件信息 |column -t
2.将awk作为计算机使用
awk 'BEGIN{print 数值计算}'
3.进行变量设定
# awk 'BEGIN{old="oldboy";print old}'
oldboy
# awk 'BEGIN{FS=":"}{print $2}' test12.txt
02
# awk -vFS=":" '{print $2}' test12.txt
02
2)END用法
1.输出结果信息
# awk 'END{print "老男孩员工捐款记录表"}{print $0}' awk.txt|column -t
Zhang Dandan 41117397 :250:100:175
Zhang Xiaoyu 390320151 :155:90:201
Meng Feixue 80042789 :250:60:50
Wu Waiwai 70271111 :250:80:75 Xiaoai
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
老男孩员工捐款记录表
3)统计分析日志公式信息
awk '/日志内容/{i=i+1;print i}' 文件名称