一、简述
awk是一种处理文本文件的语言,是一种强大的文本分析工具,相当于grep查找,sed编辑,在数据分析生成报告方面很强大。
awk适合格式化文本,如果是普通的筛选功能,还是用grep命令吧。
二、使用方法awk [option] '[pattern] {action}' {filenames} # 行匹配语句 awk '' 只能用单引号
option:选项参数,常用-F,-v
pattern:模式,可以简认为是条件,满足条件的行才会被处理。
action:一系列命令,常用动作print
1.awk命令,最常用的print命令
例:文件log.txt内容
log.txt 4行内容
1.筛选指定内容,$1表示第一个字段,使用默认分隔符
【注:awk是逐行处理文本的,在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。,$0表示所有域,$1表示当前行第一个域,$n表示当前行第n个域】
命令:$ cat log.txt | awk '{print $1}'
输出log.txt的第一列内容
2.筛选指定内容,使用,分隔符(使用“,”分隔符,筛选第2列的内容)
命令:$ cat log.txt | awk -F, '{print $2}' 或者 awk -F, '{print $2}' log.txt
第1行没有逗号,所以没有第二列内容;第2行逗号分隔为2列,3是$1,Are you like awk 是$2
3.awk定义自变量(awk有很多内置变量,需要的自行查阅,比如$n就属于内置变量)
定义自变量a=3,输出$1和$1+a
命令:$ awk '{a = 3;print $1,$1+a}' log.txt
2.awk模式pattern
awk两种特殊模式:BEGIN,END
BEGIN 模式指定了处理文本之前需要执行的操作:
END 模式指定了处理完所有行之后所需要执行的操作:
例:命令加入BEGIN和END
命令:$ awk 'BEGIN {print "开始之前的命令"} {print $0} END {print "结束后命令"}' log.txt
2.普通模式:关系表达式
例:筛选第一列大于3的行
命令:$ awk '$1>3 {print $0}' log.txt