• 第一章 awk


                                                                                                                        第1章 awk

    1 awk简介

    awk不仅仅时linux系统中的一个命令,而且是一种编程语言,可以用来处理数据和生成报告(excel)。处理的数据可以是一个或多个文件,可以是来自标准输入,也可以通过管道获取标准输入,awk可以在命令行上直接编辑命令进行操作,也可以编写成awk程序来进行更为复杂的运用。

    awk指令是由模式,动作,或者模式和动作的组合组成。

    • 正则表达式作为模式
    • 比较表达式作为模式
    • 范围模式
    • 特殊模式BEGIN和END
    • awk默认就支持的元字符
     

    功能

    示例

    解释

    ^

    字符串开头

    /^k/或$3~/^k/

    匹配所有以k开头的字符串;匹配出所有第三列中以k开头的

    $

    字符串结尾

    /a$或$3~/a$/

    匹配所有以a结尾的字符串;匹配第三列中以a结尾的

    .(点)

    匹配任意但个字符(包括回车符)

    /c..l/

    匹配字母c,然后两个任意字符,再以l结尾的行

    *

    重复0个或多个前一个字符

    /a*cool/

    匹配0个或多个a之后紧跟着cool的行

    +

    重复前一个字符一次或多次

    /a+b/

    匹配一个或多个a加上字符串b的行

    ?

    匹配0个或一个前边的字符

    /a?b/

    匹配以字母a或b或c开头的行

    []

    匹配指定字符组内的任一个字符

    /^[abc]/

    匹配以字母a或b或c开头的行

    [^]

    匹配不在指定字符组内的任一字符

    /^[^abc]/

    匹配不以字母a或b或c开头的行

    ()

    子表达式组合

    /(nimei)+/

    表示一个或多个cool组合,当有一些字符需要组合时,使用括号括起来

    |

    或者的意思

    /(A)|B/

    匹配A或字母B的行

    awk默认不支持的元字符:(参数--posix)

    元字符

    功能

    示例

    解释

    x{m}

    x字符重复m次

    /cool{5}/

    匹配cool字符5次

    x{m,}

    x字符重复至少m次

    /(cool){2,}/

    匹配cool整体,至少2次

    x{m,n}

    x字符重复至少m次,但不超过n次

    /(cool){5,6}/

    匹配cool整体,至少5次,最多6次

    •  

     

    awk -F ":" 'NR>=2 && NR<=6{print NR,$1}' 文件

    -F:参数-F指定awk按照什么标志进行文件分割,切割成一列一列的,如果不见-F参数,awk默认按照空格进行文件分割。

    ":":指定“ :”作为分割标志

    NR>=2 && NR<=6:这部分表示模式,是一个条件,表示取第2行到第6行

    {print NR,$1}:这部分表示动作,表示要输出NR行号和$1第一列。

    $0:表示默认全输出。$NF:表示去每行最后一组元素

     

    awk -F ":" 'BEGIN{}模式{动作}END{}'

    BEGIN{}:开始模式(告诉awk要如何读)  END{}:结束模式(告诉awk要如何结束)

    BEGIN有读如换行符和输出换行符:BEGIN{RS="/";ORS="任意符号"}

     

     

    问题!1 看文件/etc/passed,把所有的英文单字取出来排序,看那个单词的重复最多,看前十行?

    sed -r 's#[^a-zA-Z]# #g' shabi | xargs -n1 | sort | uniq -c | sort -rn | head

    s#[]# #g:表示把中括号里的内容替换成空行

    [^a-zA-Z]:表示取反

    xargs -n1:表示每一行只有一个元素

    sort:默认按照26个字母排序。

    参数:-n默认按照数字排序

    -r 逆转排序

    Uniq:相同元素去重

    参数:-c  去重复单词时并统计次数

    问题!2 :去除网eth0的IP地址?

    方法一:hostname -I

    方法二:ifconfig eth0 | awk 'BEGIN{RS="[ :]"}NR==31'

    方法三 :ifconfig eth0 | awk -F "[ :]+" 'NR==2{print $4}'

    问题!3 查看文件一共有多少空行?

    方法一 :grep -c "^$" /etc/services 

     方法二 :awk '/^$/{print $0}' /etc/services | wc -l

     方法三 :awk '/^$/{i=i+1;print i}' /etc/services

     方法四 : awk '/^$/{i=i+1}END{print i}' /etc/services

     

     

     

  • 相关阅读:
    Asp.net 主题 【2】
    Asp.net 主题 【1】
    登陆验证码
    Ajax进阶
    Ajax
    Django之权限管理
    Django之Form进阶
    Django之知识总结
    Django之form表单认证
    Django之ORM查询复习与cookie
  • 原文地址:https://www.cnblogs.com/yunweizongjian/p/9874595.html
Copyright © 2020-2023  润新知