day 19三剑客awk
2019-07-25 本文已影响0人
流云若雨
三剑客命令awk概述:
gawk:pattern scanning and processing language (查询这段信息方法:man awk)
模式扫描与处理语言
语法结构:awk [参数] '模式{动作}' 文件
对比:sed [参数] '条件指令' 文件信息
原理:如图所示
图片.png
一.三剑客命令awk操作
创建测试环境 创建方法:
cat >>reg.txt<<EOP 然后以EOP结尾
创建环境内容:
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
1.显示Xiaoyu的姓氏和ID号码
操作命令:awk '$2~/Xiaoyu/{ptint $1,$3}' reg.txt
图片.png
2.姓氏是Zhang的人,显示他的第二次捐款金额及他的名字
awk -F "[: ]+" '$1~/Zhang/{$1,$2,$5}' reg.txt
3.显示所有以41开头的ID号码的人的全名和ID号码
awk '$3~/^41/{print$1,$2,$3}' reg.txt
4.显示所有ID号码最后一位数字是1或5的人的全名
awk '$3~/[15]$/{print $1,$2}' reg.txt
5.获取文件中有井号或空行的内容,将 井号信息的行排除
awk '|#/' reg.txt
6.显示Xiaoyu的捐款,每个捐款数额都是以$头
awk替换
gsub = gawk substitute
gsub(/要替换的信息/,"替换成什么".$将第几列
$NF表示文件的最后一列信息
![awk '$2~/Xiaoyu/{print $4}' reg.txt|tr ':' '$
二.awk命令模式分类
普通模式:比较行信息
图片.png
说明:NR表示文件行信息
取多行信息
图片.png
特殊模式
BEGIN{动作}:在处理文件之前,先做什么事情
END{动作}:在处理文件之后,再做什么事情
图片.png
图片.png
用于计算
图片.png
修改内置变量
NF:表示最后一列的信息
图片.png
FS:指定列分隔符,默认识别空格为分隔符
图片.png
awk对文件进行统计分析
awk统计运算公式
文本信息累加运算
i=i+1
统计文件行数
END实际作用可以将统计后的最终结果进行输出
图片.png
数据信息求和运算
sum=sum+$n $n 你要对文件第几列信息求和运算
图片.png
找出有faild信息, 总共出现了多少次 (awk统计)
难点: windows文件如何传输到linux系统
yum install -y lrzsz --- 实现windows和linux系统之间数据传输
rz -- 将windows数据 ---> linux系统
sz -- 将linux数据 ---> windows系统
awk '/Failed/{i++}END{print i}' secure-20161219
awk '$6~/Failed/{i++}END{print i}' secure-20161219'
作业
公司 运营总金额 10000
张三 采购电脑花费 1000
李四 采购办公用品 250
王五 采购食品 330
公司运营金额还剩多少
awk 'BEGIN{sum=10000}NR!=1{sum=sum-$3}END{print sum}' 文件信息