01. 课程介绍部分
1.掌握awk命令基础用法
2.掌握awk命令扩展功能 统计 运算功能
awk数组部分 shell数组
3.问问题技巧
02. 课程知识回顾(提问环节)
01.sed命令作用了解
语法:sed [参数] '条件 指令' 文件信息
02.sed命令实际应用
查询数据信息 sed -n '/查询信息/p' 文件信息
添加数据信息 sed -i.bak '条件信息 i/a 添加内容' 文件信息
删除数据信息 sed -i.bak '/条件01|条件02|/d' 文件信息
替换数据信息 sed -i.bak 's#要替换的信息#替换成什么信息#g' 文件信息
sed -ri.bak 's#要替换的信息(保留信息)#替换成什么信息\1#g' 文件信息
sed -i.bak 's#正则匹配信息#&#g' 文件信息
sed -i.bak '3c oldboy' 文件信息
03.sed命令测验练习
1.利用sed命令取出IP地址
2.利用sed命令批量创建用户
3.利用sed命令取出文件权限
4.利用sed命令批量修改文件扩展名
5.利用sed命令编写脚本
修改服务器ip地址信息脚本 sh change_ip.sh
03.三剑客命令awk概述
可以进行模式扫描和一门语言
语法:awk [参数] '模式{动作}' 文件
sed [参数] '条件 指令' 文件信息
原理:
04.三剑客命令awk作用
处理文件信息:文本文件;日志文件;配置文件xinxi
处理文件方式:排除,查询,统计,替换查询
对文件列进行处理
05:三剑客命令awk操作
column -t
##01.显示xiaoyu的姓氏和ID号码
awk '{print $1 $3}' 文件信息
第一步骤:找出需要编写的模式信息
获取xiaoyu信息
awk '$2~/Xiaoyu/'oldboy2.txt--$2--表示只选择第二列,为了避免其他列也出现相
同xiaoyu信息
第二个步骤:根据条件做处理
显示满足条件的第三列和第一列信息
awk '$2`/Xiaoyu/{print $1,$3}'oldboy2.txt---用逗号来分隔,否则$1和$3连着
##02.姓氏是zhang的人,显示他的第二次捐款金额及他的名字
第一步:找出需要编写模式信息
awk '$~/Zhang/'oldboy2.txt
第二步:根据条件做处理
awk '$1~/Zhang/{print $1,$2,$4}'oldboy2.txt
awk -F ":" '$1~/Zhang/{print $3}'oldboy2.txt
awk -F "[: ]+" '$1~/Zhang/{print $1,$2,$5}' oldboy2.txt--最终答案--将多个连续
分隔符合并为一个整体-F"[: ]+"
##03.显示所有以41开头的ID号码的人的全名和ID号码
第一步:找出需要编写模式信息
awk '$3~/^41' oldboy2.txt
第二步:根据条件做处理
awk '$3~/^41/{print $1,$2,$3}'oldboy2.txt
##04.显示所有ID号码最后一位数字是1或5的人的全名
第一步:找到需要编写的模式信息
awk '$3~/1$|5${print$1,$2}'oldboy2.txt
##05.获取文件中有#号或空行的内容,将空行和#号信息的行排除
第一步:找出需要编写的模式信息
awk '/#|^$/'oldboy.txt
说明:$0表示将文件所有列信息进行显示
awk '!/#|^$/'oldboy.txt
第二步根据条件做处理
awk '!/#|^$/'oldboy.txt
或者:awk '$0!~/#|^$/'oldboy.txt
##06.显示Xiaoyu的捐款,每个捐款都是以$开头,如$398989
awk '$2~/Xiaoyu/{print $4}'oldboy2.txt|sed 's#:#$#g'
gsub=gawk sub
gsub(/要替换的信息/,'替换成什么信息',$将第几列)
awk '$2~/Xiaoyu/{gsub(/:/,"$",$NF);print $NF}' reg.txt
$155$90$201
说明: $NF 表示文件的最后一列信息
06.awk命令模式分类
普通模式:比较行信息
awk 'NR==2'oldboy2.txt:只显示第二行信息
awk 'NR>2'oldboy2.txt:显示行数大于2的行信息
awk 'NR<2'oldboy2.txt:显示行数小于2的行信息
awk 'NR==2,NR==4'oldboy2.txt:连续显示多行信息---行间用逗号分隔
awk 'NR==2;NR==4'oldboy2.txt:显示不连续行信息---行间用分号分隔
说明:NR表示文件行信息
特殊模式:
BEGIN{动作}: 在处理文件之前,先做什么事情
awk 'BEGIN{print "姓","名","号码","捐款记录"}{print $0}' reg.txt|column -t
用于计算:awk "BEGIN{print 2+2}"
修改内置变量
NF:取出最后一列; $(NF-1;)倒数第二列$(NF-2):倒数第三列
FS:指定列分隔符,默认识别空格为分隔符
awk 'BEGIN{FS="[: ]+"}{print $4}' reg.txt
awk -vFS="[: ]+" '{print $1,$4}' reg.txt
(结果一样,要是没有$1)
END{}:在处理文件之后,在做什么事情.
awk 'BEGIN{print "姓","名","号码","捐款记录"}{print $0}END{print "学生捐款登记表"}' reg.txt|column -t
07.awk对文件进行统计分析
##1) awk统计运算公式
a文件信息累加运算 i=i+1 awk '/oldboy/{i++}END{print i}' test.txt
b数值信息求和运算 sum=sum+$n $n 你要对文件第几列信息做求和运算
seq 10|awk '{sum=sum+$1}END{print sum}'
08. 课程知识梳理:
1) awk命令概念介绍: 语法 原理 BEGIN 处理文件 END
2) awk命令操作说明: 作用 查询 排除 替换
参数: -F : 指定列分割符号
-v : 指定变量信息
动作: print : 输出指定信息
gsub : 替换指定信息
符号: ~ : 匹配信息 按照指定列进行匹配
!~ : 将匹配的信息取反
// : 指定匹配信息
3) awk命令模式分类
BEGIN{}: 处理文件前, 执行什么动作
END{}: 处理文件后, 执行什么动作
内置变量: FS NF NR --$0
- awk命令实现运算功能
累加公式: i=i+1 i++
求和运算: sum=sum+$n