• (转)awk实例练习(一)


    文章转自 http://www.cnblogs.com/zhuyp1015/archive/2012/07/14/2591822.html

    前一篇学习了awk的基本知识,现在来做一些练习加深一下印象。

    假设我们有这样一个待处理的文件"grade.txt":

    M.Tansley     05/99     48311     Green     8     40     44
    J.Lulu     06/99     48317     green     9     24     26
    P.Bunny     02/99     48     Yellow     12     35     28
    J.Troll     07/99     4842     Brown-3     12     26     26
    L.Tansley     05/99     4712     Brown-2     12     30     28
     
    #打印整个文件
    $ awk '{print $0}' grade.txt
    M.Tansley       05/99   48311   Green   8       40      44
    J.Lulu          06/99   48317   green   9       24      26
    P.Bunny         02/99   48      Yellow  12      35      28
    J.Troll         07/99   4842    Brown-3 12      26      26
    L.Tansley       05/99   4712    Brown-2 12      30      28
     
    #打印第一和第四个域
    $ awk '{print $1,$4}' grade.txt
    M.Tansley Green
    J.Lulu green
    P.Bunny Yellow
    J.Troll Brown-3
    L.Tansley Brown-2
     
    #打印表头
    $ awk 'BEGIN {print "Name            Belt ---------------------------"}
    > {print $1" "$4}' grade.txt
    Name            Belt
    ---------------------------
    M.Tansley       Green
    J.Lulu  green
    P.Bunny Yellow
    J.Troll Brown-3
    L.Tansley       Brown-2
     
    正则表达式相关
    为使一域号匹配正则表达式,使用符号‘~’后紧跟正则表达式,也可以用 i f语句。awk中if后面的条件用()括起来。
    #下面代码打印$4 包含 Brown 的行
     
    $ awk '$4~/Brown/ {print $0}' grade.txt
    J.Troll         07/99   4842    Brown-3 12      26      26
    L.Tansley       05/99   4712    Brown-2 12      30      28
     
    #非精确匹配
    $ awk '$3 ~/48/ {print $0}' grade.txt
    M.Tansley       05/99   48311   Green   8       40      44
    J.Lulu          06/99   48317   green   9       24      26
    P.Bunny         02/99   48      Yellow  12      35      28
    J.Troll         07/99   4842    Brown-3 12      26      26
     
    #精确匹配
    $ awk '$3=="48" {print $0}' grade.txt
    P.Bunny         02/99   48      Yellow  12      35      28
     
     
    #不匹配 使用 ‘!~’
    $ awk '$0 !~ /Brown/' grade.txt
    M.Tansley       05/99   48311   Green   8       40      44
    J.Lulu          06/99   48317   green   9       24      26
    P.Bunny         02/99   48      Yellow  12      35      28
     
    $ awk '$4 != "Brown-2" {print $0}' grade.txt
    M.Tansley       05/99   48311   Green   8       40      44
    J.Lulu          06/99   48317   green   9       24      26
    P.Bunny         02/99   48      Yellow  12      35      28
    J.Troll         07/99   4842    Brown-3 12      26      26
     
    #小于
    $ awk '$6 < $7 {print $0 "$1 Try better at the next comp"}' grade.txt
    M.Tansley       05/99   48311   Green   8       40      44$1 Try better at the next comp
    J.Lulu          06/99   48317   green   9       24      26$1 Try better at the next comp
     
    #设置大小写
    $ awk '/[Gg]reen/' grade.txt
    M.Tansley       05/99   48311   Green   8       40      44
    J.Lulu          06/99   48317   green   9       24      26
     
    #匹配第一个域的第四个字符是‘a’
    $ awk '$1 ~/^...a/' grade.txt
    M.Tansley       05/99   48311   Green   8       40      44
    L.Tansley       05/99   4712    Brown-2 12      30      28
     
    #'或'匹配,使用 ‘|’ ,需使用括号括起来
    $ awk '$0 ~/(Yellow|Brown)/' grade.txt
    P.Bunny         02/99   48      Yellow  12      35      28
    J.Troll         07/99   4842    Brown-3 12      26      26
    L.Tansley       05/99   4712    Brown-2 12      30      28
    Coding Life
  • 相关阅读:
    设计师必备:来自顶级设计师的建议清单
    Qt 控制线程的顺序执行(使用QWaitCondition,并且线程类的run函数里记得加exec(),使得线程常驻)
    Qt 模拟鼠标点击(QApplication::sendEvent(ui->pushbutton, &event0);)
    利用Qt开发跨平台APP(二)(iOS,使用Qt5.9,很详细,有截图)
    C# RESTful API
    NET架构
    一个宏实现
    初步了解 Netty
    使用Rabbit MQ消息队列
    NET CORE与Spring Boot
  • 原文地址:https://www.cnblogs.com/lewiskyo/p/4605263.html
Copyright © 2020-2023  润新知