Linux三剑客之一 awk

awk:是一种优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言的最大功能取决于一个人所拥有的知识。awk命名:Alfred Aho Peter Weinberger和brian kernighan三个人的姓的缩写。 
最简单地说, AWK 是一种用于处理文本的编程语言工具。 
任何awk语句都是由模式和动作组成,一个awk脚本可以有多个语句。模式决定动作语句的触发条件和触发时间。

awk编程基础及进阶
学习内容:
字段(域)与记录、模式匹配、基本的awk执行过程、awk常用内置变量(预定义变量)、awk数组(工作常用)
awk 选项:-F 指定域分隔符
awk格式:
1、查看awk版本:awk -version
工作中,常用gawk
2、awk指令:是由模式、动作,或者模式和动作的总和组成
格式:awk [options] 'pattern {action}'
pattern模式:可以理解为:找谁
action动作:可以理解为:干什么
3、awk执行过程
awk是一行一行的处理文件,这条命令中包含模式部分(条件)和动作部分,awk将处理模式指定的行

awk执行:
1、awk读取第一行
2、判断是否符合模式中的条件
如果匹配则执行对应的动作
如果不匹配,继续读取下一行
3、继续读取下一行
4、重复过程1-3,直至文件结束

4、awk内须知内置变量
 

记录:行 域:列
$ 取,取用内部信息
$0 代表当前的一整行,一条记录
$NF:代表最后一个区域的值
$1--$n $数字:代表第n个域
FS:一行记录的各域间的分隔符
NS:每行记录切割符,域间的分隔符
NR:代表行数(记录号),默认一行对应一个记录,读取新行时会自动加1
NF:最后一个域号,标识当前行有几个域
RS:记录的分隔符,简单理解为可以指定每个记录的结尾标识

5、正则表达式
 

^匹配以什么开头的行 记录如:‘^bash’
$匹配以什么结尾的记录如:‘bash$’
+重复一次或一次以上
~(匹配) / !~(不匹配)用于对记录或字段的表达式进行匹配如:$1~ 第一个域匹配
*重复前一个字符0次或多次a*cool 匹配0或多个a
[]匹配[]内任何一个字符[abc]、[a-z]
.匹配任意一个字符(包括回车)a.
匹配前面的字符0次或一次如:a?b 匹配ab或b

如:awk ‘$NF~/^bash’ /etc/passwd 最后一个域匹配以bash开头的行
 

a、/正则表达式开始/,/正则表达式结束/
如:awk '/root/,/mysql/' file2 显示file2文件中root第一次出现到MySQL第一次出现的行
b、$1~/正则表达式开始/,$3~/正则结束/
\{m,\}:匹配前面字符至少m次
\{m\}:匹配正好m次
\{m,n\}:匹配最少m次,最多n次

6、begin模块:在读取文件前就做的操作,一般用于初始化条件的设置
end模块:读取完所有的文件时才做的最后工作
{}:内部写读取文件时进行的操作,用来遍历整个文件,类似于awk的迭代器
awk格式:awk 'BEGIN{初始化}{文件操作}END{结束操作}'
awk 'BEGIN{coms} /pattern/{coms} END{coms}' filename
awk使用;分隔多个命令

7、awk案列
 

(1)file2中,以:为分隔符,区域3大于15的行的数目?
awk -F ":" '$3>15{a=a+1}END{print a}' file2
注:a=a+1 === a++ === a+=1
(2)用awk输出1+2+.....+100的值
awk 'BEGIN{for(i=1;i<=100;i++) sum+=i; print sum}'

8、awk数组:数组名[处理字串]=“值” (arrayname[string]=value)
 

awk数组下标:可以是数字、字母、字符串
输出数组:for(key(变量) in array) key是元素名
print key,array[key]
(1)awk统计每个IP的访问量
array[192,168.224.10]++

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Star星屹程序设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值