zoukankan      html  css  js  c++  java
  • linux shell学习之awk ---新手笔记

    1.AWK的pattern
      BEGIN
      END
      expression 例: NF>10 或/^a/
      /regular expression/?
        可以⽤用类似/^a/这种写法
        另一种写法$1 ~ /^a/       //字段匹配
      表达式之间可以⽤用&& || ! ?: 等操作符做布尔运算(当然可以是正则表达式)
      expression , expression 表⽰示开始和结束 例: NF==5,NF==10

    例子1: cat /etc/passwd |awk -F":" 'NR==5,NR==10{print NR,$1}'   //只显示passwd文件的第5-10行,并定义字段分隔用:号

         5 sync
            6 games
            7 man
            8 lp
            9 mail
           10 news

           知识点:1.-F参数。2.expression , expression的用法。

    2.AWK的action

      完善的编程语⾔言⽀支持变量赋值、数组、判断、循环、⾃自定义函数
      有很⽅方便的预定义的变量和函数
      最常⽤用的是print函数
      字段取值$1、$2、$3……$NF
      $0就是文件的所有行

         注意:awk的定义变量不是一定非得$符号开头,$符号是取字段值。

    例子2:awk 'BEGIN{RS="[^0-9a-zA-Z]"};{count[$0]++};END{for (i in count) print i,count[i]}'<1.txt

      iwant 1
      chinawelcome 1
      ilove 1
      to 7
      china 4
      love 4
      changsha 5
      i 4
      beijing 2
      welcome 5
      you 5

    注:语句作用:将文件的每一个单词提取出单独成行,并统计单词出现的次数。

    知识点:1.BEGIN,END块的写法和使用({}括起来,;来隔开)。2.分隔符RS和FS的区别(RS:遇到RS即另开一行)。3.数组的使用。4.for循环。5.文件重定向输入

    例子3 对上面例子进行扩展(排序并写入新文件)

     awk 'BEGIN{RS="[^0-9a-zA-Z]"};{count[$0]++};END{for (i in count) print i,count[i] | "sort  -r -k2 -o 3.txt" }'<1.txt   

    知识点:1.print用法。print … | command : 运⾏command命令并将print的输出作为command的输⼊。注意整个command包括参数所有部分都在双引号内

                2. sort用法。-o参数将排序结果写入文件,而此重定向文法完成。

    3. getline的用法

       例子:将文件合并起来。

         vi join.awk

         #!/usr/bin/awk -f

        {  

      getline sl<ARGV[2]

          print $0 sl

    }

      执行:awk -f join.awk file1 file2

  • 相关阅读:
    深入剖析ASP.NET的编译原理之二:预编译(Precompilation)
    六个建议防止SQL注入式攻击
    微软IIS的ISAPI筛选器权限法则
    IIS属性没有ASP.NET选项
    让我们的服务器更安全Win03 防木马权限设置,IIS服务器安全配置
    IIS自动停止,iis自动关闭。应用程序池假死、自动重启以及iis权限等解决办法
    深入剖析ASP.NET的编译原理之一:动态编译(Dynamical Compilation)
    c#操作xml
    C# 容易出现insert into语句的语法错误的原因
    兼容ie/火狐的全能日历代码含农历
  • 原文地址:https://www.cnblogs.com/bowenlearning/p/4477006.html
Copyright © 2011-2022 走看看