ToB企服应用市场:ToB评测及商务社交产业平台
标题:
shell第十章(awk)
[打印本页]
作者:
用多少眼泪才能让你相信
时间:
2024-11-26 04:52
标题:
shell第十章(awk)
一。awk概论
1.什么是awk
·awk是Linux以及UNIX情况中现有的功能最强大的数据处理处罚工具,awk其名称得自于它的创始人 Alfred Aho、Peter Weinberger和Brian Kernighan姓氏的首个字母
d7dbe61ae3 ·awk是一种处理处罚文本数据的编程语言,适合文本处理处罚和报表生成,awk的计划使得它非常适合于 处来由行和列组成的文本数据。
·awk还是一种编程语言情况,它提供了正则表达式的匹配,流程控制,运算符,表达式,变量以及函数等一系列的步伐计划语言所具备的特性,它从C语言中获取了一些优秀的思想
2.工作流程
第一步:主动从指定的数据文件中读取行文
第二步:主动更新awk的内置体系变量的值,例如列数变量NF、行数变量NR、行变量0以及各个列变量1、$2等等
第三步:依次执 步伐中所有的匹配模式及其操作
第四步:当实行完步伐中所有的匹配模式及其操作之后,如果数据文件中仍然另有为读取的数据行,则返回到第(1)步,重复实行(1)-(4)的操作。
3.BEGIN模式与END模式 :格式:
awk 'BBEGIN{ commands } pattern { commands } END{ commands}' [INPUTFILE....]
(1)BEGIN模式是一种特殊的内置模式,实在行的时机为awk步伐刚开始实行,但是又尚未读取任何数据之前。
因此,该模式所对应的操作仅仅被实行一次,当awk读取数据之后,BEGIN模式便不再成立
。所以,用户可以将与数据文件无关,而且在整个步伐的生命周期中,只需实行1次的代码放在BEGIN模式对应的操作中,一样平常用于打印陈诉的标题和更改内在变量的值
(2)END模式是awk的别的一种特殊模式,该模式实行的时机与BEGIN模式恰好相反,它是在awk下令处理处罚完所有的数据,即将退出步伐时成立,在此之前,END模式并不成立。
无论数据文件中包含多少行数据,在整个步伐的生命周期中,该模式所对应的操作只被实行1次。因此,一样平常情况下,用户可以将很多善后工作放在END模式对应的操作中EN,一样平常用于打印总结性的描述或数值总和
注释:BEGIN模式相当于echo,可以单独使用,在终端表现一行内容,在awk中BEGIN和END可以举行省略
二。三种输出方式
1.下令举行展示
2.半下令半脚本举行展示
建立awk1.awk文件
实行:awk -f 脚本名 文件名
3.脚本实行:
awk脚本不能用bash举行编辑,需要./awk1.awk来举行编辑,同时也需要为此文件举行提权x
格式:
三。记录和域
awk以为输入文件是布局化的,awk将每个输入文件行界说为记录,行中的每一个字符串界说为域,域之间用空格,tab键或者其他符号来举行分隔,分隔域的符号就叫做分割域,默认以为空格或者tab
awk界说域操作符$来指定实行的域(域就是列),域操作符$背面跟数字或者变量来标识域的位置($2就表示第二列),每条记录的域从1开始编号,
如$1标识第一个域,$0标识所有域(也就是打印所有的内容)
注释:先把第一行举行输入,在选择第一列举行打印,先按行举行处理处罚
案例一:取出本机的ip地址:
案例二:取出不以#开头的行,且取出需求信息
格式:awk '条件/{实行的操作}' 文件名 (条件先行向操作,再实行对列的操作)
四。设置空格符方式
1.参数-F,能指明分隔符,例如下图对于/etc/passwd,里面的分隔符是:而不是空格
注释:要输出多列的话,中心用空格去隔断
2.在BEGIN下使用FS
注释:通过BEGIN状态的FS可以自主设置指定空格符
五。NR,NF,FILENAME量
NR变量:表示记录数,即记录有多少行,
NF变量:表示记录的域数量,即记录有多少列
FILENAME:处理处罚的文件名
六。awk的变量
1.体系变量:
FS:指定文件中的某一个符号为分隔符,再举行截取
OSF:截取事后的内容,使用指定的符号举行拼接
案例一:打印行号的两种方法:
2.自界说变量:
(1)方法1:再BGGIN模式内容下界说自界说变量
(2)方法2:使用-v参数举行自界说参数
七。awk操作符:
awk是一种编程语言情况,因此,它也支持常用的运算符以及表达式,例如:算数运算符,逻辑运算以及关系运算符
1.算数运算符:+ - * / ^(指数) **(指数)
案例一:计算某个文件下的总字节数
注释:BEGIN和END之间的{}间需要举行空格处理处罚,{}内的内容需要;举行分隔,而print内需要,举行分隔
2.赋值运算符:= += -= /= %= ^=
案例1:删选出ifconfig里面的ip地址
注释:NR:行号等于2的时候,打印第二列
案例2:打印/etc/passwd文件内的第六行
3.条件运算符:三目
格式:expression ? value1 : value2
是一种三目运算符,原则:表达式expression成立时候,value1作为整个表达式结果,否则为value2作为整个表达式是结果
案例1:判定文件内每一行两个数的最大值
4.逻辑运算符
&& || !
5.关系运算符
> < >= =< == != ~(匹配) !~(不匹配)
案例:查询/etc/passwd 文件第三列小于10以下的数据,且仅列出账号与第三列
6.其他运算符:++(自增) --(自减) + -等
注释:awk中的操作数为非数值型计算时会转为数值0
注释:awk中变量中未赋值参与算数运算时初始值为0
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4