Linux awk命令基础

一、简述

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


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容