• 四.awk、sde深度讲解


    ###sed###

     

    查询

    1创建测试文件

    cat>person.txt<<EOF
    > 101,oldboy,CEO
    > 102,zhangyao,CTO
    > 103,Alex,COO
    > 104,yy,CFO
    > 105,feixue.CIO
    > EOF

    2查询单行文本

    2连续查询多行文本

    3显示出文件包含oldboy的行到包含104的行

    等于grep  'oldboy'  person.txt

    ^104以104开头更加精确

    4过滤多个字符串

     

    7查询指定多行 使用;分号

    增加

    1增加单行文本

     #sed  '3a 103.5,Lee,UFO'  person.txt
    101,oldboy,CEO
    102,zhangyao,CTO
    103,Alex,COO
    103.5,Lee,UFO
    104,yy,CFO
    105,feixue.CIO
    # sed  '3i 103.5,Lee,UFO'  person.txt
    101,oldboy,CEO
    102,zhangyao,CTO
    103.5,Lee,UFO
    103,Alex,COO
    104,yy,CFO
    105,feixue.CIO

    2增加多行文本

    # sed '$a new,new,new,' person.txt

    $a 最后一行
    101,oldboy,CEO
    102,zhangyao,CTO
    103,Alex,COO
    104,yy,CFO
    105,feixue.CIO
    new,new,new,
    # sed '2a 106,xiaoyu,CXO 107 108 109' person.txt

    101,oldboy,CEO
    102,zhangyao,CTO
    106,xiaoyu,CXO
    107
    108
    109
    103,Alex,COO
    104,yy,CFO
    105,feixue.CIO

    一般追加到行位用的cat>person.txt<<EOF

    追加到某一行就用sed  i  a

     删除

    sed   '/^$/d'   person.txt 

    删除空行

    sed   -n  '/^$/!p'  person.txt 

    /^$/p显示空行加!排除取反

    sed   '$d'    person.txt 

    删除最后一行
    sed   '$!d'   person.txt

    删除不是最后一行

    替换

    文本替换

    测试

    变量替换

    这里要用双引号  单引号不执行

    # x=oldboy
    # y=oldgirl
    # sed  "s#$x#$y#g"  person.txt
    101,oldgirl,CEO

    102,zhangyao,CTO
    103,Alex,COO

    104,yy,CFO

    105,feixue.CIO

    反向引用

     

    扩展

    回顾

    ###awk####

    执行过程 按照下面的命令来理解

    主要讲不同的模式或者说是条件

     创建环境

     # mkdir -p /server/files

     

    #cat>>/server/files/reg.txt<<EOF

    Zhang Dandan 41117397 :250:100:175
    Zhang Xiaoyu 390320151 :155:90:201
    Meng Feixue 80042789 :250:60:50
    Wu Waiwai 70271111 :205:80:75
    Liu Bingbing 41117483 :250:100:175
    Wang Xiaoai 3515064655 :50:95:135
    Zi Gege 1986787350 :250:168:200
    Li Youjiu 918391635 :175:75:300
    Lao Nanhai 918391635 :205:100:175

    EOF

     

    # awk '/Xiaoyu/' reg.txt  过滤出来

     Zhang Xiaoyu   390320151  :155:90:201

     # awk '/Xiaoyu/{print $1,$2,$3}' reg.txt 花括号前面就是条件或者说模式

     Zhang Xiaoyu 390320151

     精确一点就是

    # awk '$2~/Xiaoyu/{print $1,$2,$3}' reg.txt

    $2~/Xiaoyu/第二列包含xiaoyu

    $0~  ===/Xiaoyu/

     

    # awk '$3~/^41/' reg.txt

    # awk '$3~/^41/{print $1,$2,$3}' reg.txt

    # awk '$3~/[15]$/' reg.txt

    # awk '$3~/[15]$/{print $1,$2}'  reg.txt

    $0 就是所有列

    # awk '{gsub(/:/,"$",$4);print}' reg.txt 

    特殊模式BEGIN和GND

     

    i每加1就显示出来 

    。。

    END 显示最后的结果

    awk数组统计

     

     ############

     最终计算

    或者用awk中for循环for (pol in h)==pol随便写就是个变量

    in就是去哪里  awk循环里h这个位置是数组的名字

    会自动打开h成为数组名字

     

    以后可以把它当做一个公式用$2用那一列自己选比如说第一列是ip地址

     作业 

    awk '/Failed/' secure-20161219 |awk '$11~/[0-9].[0-9].[0-9].[0-9]/{i[$9" "$11]=i[$9" "$11]+1}END{for(ip in i) print ip" "i[ip]}'

     

  • 相关阅读:
    python 正则表达式练习题
    python2与Python3的区别
    Python :生成一个1到50的大字符串,每个数字之间有个空格 1 2 3 4 ..........50
    关于实现今天到一年中任意一天两者之间的天数差的计算
    Window下pip的安装
    Pycharm中Git、Github的简单使用和配置
    Python中字符串操作函数string.split('str1')和string.join(ls)
    实现无密码远程登陆另一台机器
    我的第一篇博客
    String类型转List<Integer>
  • 原文地址:https://www.cnblogs.com/cqzhou/p/8619741.html
Copyright © 2020-2023  润新知