0
点赞
收藏
分享

微信扫一扫

Linux的面试常客AWK

Linux的面试常客AWK

语法

awk [options] '{[pattern] commands}' filenames
其中options代表参数,单引号中的内容代表要执行的命令,filenames代表文件名。
例如:awk -F, ‘{print $1,$2}’ log.txt
awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
一个awk脚本通常由:BEGIN语句块、能够使用模式匹配的通用语句块、END语句块3部分组成,这三个部分是可选的。

options

-F fs fs指定输入分隔符,fs可以是字符串或正则表达式,如-F,
例子:awk -F, ‘{print $1,$2}’ log.txt
解释:将log.txt文件中的每一行以,分割,输出每一行的第一个和第二个元素
如果不指定这个参数,默认为空格分割

-v var=value 赋值一个用户定义变量,将外部变量传递给awk

-f scripfile 从脚本文件中读取awk命令

内置变量

变量描述
$n当前记录的第n个字段,字段间由FS分隔
$0完整的输入记录
ARGC命令行参数的数目
ARGIND命令行中当前文件的位置(从0开始算)
ARGV包含命令行参数的数组
CONVFMT数字转换格式(默认值为%.6g)ENVIRON环境变量关联数组
ERRNO最后一个系统错误的描述
FIELDWIDTHS字段宽度列表(用空格键分隔)
FILENAME当前文件名
FNR各文件分别计数的行号
FS字段分隔符(默认是任何空格)
IGNORECASE如果为真,则进行忽略大小写的匹配
NF一条记录的字段的数目
NR已经读出的记录数,就是行号,从1开始
OFMT数字的输出格式(默认值是%.6g)
OFS输出记录分隔符(输出换行符),输出时用指定的符号代替换行符
ORS输出记录分隔符(默认值是一个换行符)
RLENGTH由match函数所匹配的字符串的长度
RS记录分隔符(默认是一个换行符)
RSTART由match函数所匹配的字符串的第一个位置
SUBSEP数组下标分隔符(默认值是/034)

常见任务

  1. 查找含某字符的行
awk `/abc/` log.txt 

在log.txt文件中查找包含“abc”字符串的行

  1. 显示文件行数
awk 'BEGIN{ i=0 } { i++ } END{ print i }' log.txt
  1. 读取指定行数据
awk 'NR==2, NR==3' log.txt

读取log.txt文件中的第2到3行的数据

  1. 显示所有内容
awk '{print}' log.txt
举报

相关推荐

0 条评论