ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

三剑客6_awk

2021-12-26 19:33:11  阅读:162  来源: 互联网

标签:END 第三列 awk 一列 print NR 三剑客


 4) 三剑客-awk

 4.1)特点与应用场景

awk
一门语言,类似于C语言
过滤,统计,计算
过滤,统计日志

 4.2 执行过程

     awk -F, 'BEGIN{print "name"}{print $2}END{print "end of file"}'  文件名

    “以逗号为分隔符,取第二列”

 

 

 

 

4.3)行与列

名词 awk中叫法 一些说明
记录 record 每一行默认通过回车分割的
字段,域 filed 每一列默认通过空格分隔的
awk中行和列结束标记都是可以修改的    

         ---1  取行:

awk    
NR==1 取出某一行  
NR>=1&&NR<=5 取出1到5行 范围  
符号 > < >= <= == !=  
     

         

  -----2)取列

               -F 指定分隔符,指定每一列结束标记(默认是空格,连续的空格 tab键)

                $数字  取出某一列,注意:在awk中$内容 一个意思 表示取出某一列

                $0 整行的内容

                {print XXX}

                $NF表示最后一列

取出第5列和最后一列,按列对齐(column -t)

####取出passwd第一列和最后一列

 

 #####使用awk调换passwd 第一列和最后一列内容,然后显示每一行的内容(调换后的)

 

 

 

 

 3)小结

    行与列 名称

    awk取行与取列,指哪打哪

    ##取出网卡IP内容

 

 

 

 

 

    awk内置变量

内置变量    
NR Number of Record记录号,行号  
NF Number of Field 每行有多个字段(列)$NF表示最后一列  
FS -F: 等价于-v FS=:   Field Separator字段分隔符,每个字段结束标记  
OFS Output Field Separator输出字段分隔符(awk显示每一列的时候,每一列之间通过什么分隔,默认是空格)  

 

 

4.4 awk模式匹配

     awk -F"[ /]+" 'NR==3{print $3}'

awk -F"[ /]+" 'NR==3{print $3}'
命令 选项 '条件”{动作}'
    '找谁{干啥}'
    '模式{动作}'
   

<'pattern{action}'

比较符号: >  <  >=  <=  ==  !=

正则:

范围 表达式:

特殊条件:BEGIN和END

 

1)比较表达式-参考上面取行部分

2)正则

    //支持扩展正则

    awk可以精确到某一列,某一行中包含/不包含......内容

    ~包含

    !~不包含

 

正则 awk正则
^表示以...开头的行 某一列的开头 $3~/^oldboy/
$表示以...结尾的行 某一列的结尾 $4~/lidao$/
^$表示空行 某一列是空的 很少用

####第三列里以1开头

 

 ####找出 第三列以2开头的行,并显示第一列,第三列和最后一列

 

  ####找出 第三列以1或者2开头的行,并显示第一列,第三列和最后

 

 3)表示范围

    /哪里开始/,/哪里结束/      常用

    NR==1,NR==5 从第一行开始到第5行结束,类似于sed -n '1,5p'

 

 #显示指定实际范围内容的IP地址和用户访问uri

 

 4)特殊模式BEGIN{}和END{}

模式 含义 应用场景
BEGIN{} 里面的内容会在awk读取之前执行

1)进行简单统计,计算,不涉及读取文件(常见)

2)用来处理文件之前,添加个表头(了解)

3)用来定义awk变量(很少用,因为可以用-v)

END{} 里面的内容会在awk读取之后执行

1)awk进行统计,一般过程:先进行计算,最后END里面输出结果

2)awk使用数组,用来输出数组结果(常见)

     

   END{}统计计算

   统计方法

 

统计方法 简写形式 应用场景
i=i+1 i++ 计数,统计次数
sum=sum+??? sum+=??? 求和,累加
注意:i,sum都是变量    

###统计/etc/service里面有多少个空行

 

 ###seq 100 求和1+2+3+....+100 awk实现

 

 ###如果想查看过程

 

标签:END,第三列,awk,一列,print,NR,三剑客
来源: https://www.cnblogs.com/iris1202/p/15729914.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有