awk特点:
文本与数据处理工具: 可编程 ----> 处理灵活,功能强大。
awk应用:
1、统计 2、制表3、还有更多的功能哦
awk学习内容:
1、awk行处理方式与格式 2、awk内嵌参数应用 3、awk内嵌程序应用
awk处理方式与格式:
1、awk处理方式 2、awk与格式
==============================================================================================================================
awk处理方式:
- awk一次处理一行内容
- awk对每行可以切片处理
$ awk '{print $1}' //输出首个单词
使用awk——格式:
- 命令行格式
$ awk [options] 'command' file(s)
command : pattern {awk操作命令}
pattern : 正则表达式;逻辑判断式
- 脚本格式
$ awk -f awk-script-file file(s)
使用awk——基本格式:
$ awk [options] 'command' file(s)
command : pattern {awk操作命令}
pattern : 正则表达式;逻辑判断式
command1 :pattern {awk操作命令}
操作命令:内置函数:print() printf() getline..;awk内置参数应用:
- awk内置变量1
- $0 :表示整个当前行
- $1 :每行第一个字段
- $2 :每行第二个字段
awk内置参数:分隔符
- awk内置变量2
- NR : 每行的记录号
- NF : 字段数量变量
awk内置参数应用:
案例一:
显示 /etc/passwd 每行的行号,每行的列数,对应行的用户名(print , printf)
案例二:
显示/etc/passwd中用户ID大于100的行号和用户名(if...else...)
案例三:
在服务器log中找出 'Error'的发生日期:
使用awk——逻辑判断式:
command : pattern {awk 操作命令}
pattern : 正则表达式:逻辑判断式
- awk逻辑
~ , ! ~ : 匹配正则表达式
== , != , < , > : 判断逻辑表达式
使用awk——扩展格式:
$ awk [options] 'command' file(s)
command2 扩展
BEGIN{ print "start" } pattern{ commands } END { print "end"}
案例一:
制表显示/etc/passwd每行的行号,每行的列数,对应行的用户名
案例一:
统计当前文件夹下的文件/文件夹占用的大小
案例二:
统计显示/etc/passwd的账户总人数
awk处理过程
案例二:
统计 显示/etc/passwd的账户总人数。
统计显示UID大于100的用户名。
案例三:
统计netstat -anp状态下为LISTEN和CONNECTED的连接数量
awk VS sed
- awk和sed都可以处理文本
- awk侧重于负责逻辑处理
- sed侧重于正则处理