awk命令
1、功能介绍
AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。是一种文本报告生成器,实现格式化文本输出。之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。
2、语法格式
awk [options] 'BEGIN{ print "start" } ‘pattern{ commands }’ END{ print "end" }' file
注:
BEGIN、END是AWK 的关键字,因此必须大写;这两个部分开始块和结束块是可选的
BEGIN 语句设置计数和打印头部信息,在任何动作之前进行
END 语句输出统计结果,在完成动作之后执行
3、AWK工作步骤
AWK工作通过三个步骤
(1)读:从文件、管道或标准输入中读入一行然后把它存放到内存中;
(2)执行:对每一行数据,根据 AWK 命令按顺序执行。默认情况是处理每一行数据,也可以指定模式。
(3)重复:一直重复上述两个过程直到文件结束。
4、AWK语法格式及参数选项
(1)AWK语法格式
awk [选项参数] '命令' 指定操作文件名awk [选项参数] -f awk脚本 指定操作文件名
(2)参数选项
-F fs,--field-separator fs
指定以fs作为输入行分隔符,fs是一个字符串或者是一个正则表达式(默认分隔符为空格或者制表符)
-v var=value , --asign var=value
赋值一个用户定义变量
-f scripfile , --file scriptfile
从脚本文件中读取awk命令
-W compact,--compat, -W traditional,--traditional
在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略
-W copyleft,--copyleft, -W copyright,--copyright
打印简短的版权信息
-W dump-variables[=file],--dump-variables[=file]
打印全局变量(变量名、类型、值)到文件中,如果没有提供文件名,则自动输出至名为dump-variables的文件中。
-W help or --help, -W usage or --usage
打印全部awk选项和每个选项的简短说明
5、AWK变量
awk 内置变量(预定义变量)
$n:当前记录的第n个字段,比如:$1表示第一个字段,$2表示第二个字段$0:这个变量包含执行过程中当前行的文本内容FILENAME:当前输入文件的名FS:字段分隔符(默认是空格)NF:表示字段数,在执行过程中对应于当前的字段数,NF:列的个数FNR:各文件分别计数的行号NR:表示记录数,在执行过程中对应于当前的行号OFS:输出字段分隔符(默认值是一个空格)ORS:输出记录分隔符(默认值是一个换行符)RS:记录分隔符(默认是一个换行符)
运算符:
~ :匹配,与==相比不是精确比较!~ :不匹配,不精确比较==:等于,必须全部相等,精确比较!=:不等于,精确比较&&:逻辑与||:逻辑或+ :匹配时表示1个或1个以上/[0-9][0-9]+/:两个或两个以上数字/[0-9][0-9]*/:一个或一个以上数字< <= > >= != ==:关系运算符+ -:加,减* / %:乘,除与求余+ - !:一元加,减和逻辑非^ ***:求幂++ --:增加或减少,作为前缀或后缀$:字段引用
我本是槐花院落闲散的人,满襟酒气。小池塘边跌坐看鱼,眉挑烟火过一生。
——沈离淮