zoukankan      html  css  js  c++  java
  • 四.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]}'

     

  • 相关阅读:
    显示文件本地文件夹
    Select Dependencies选择依赖项
    搜索小技巧
    783. Minimum Distance Between BST Nodes BST节点之间的最小距离
    5. Longest Palindromic Substring 最长的回文子串
    12. Integer to Roman 整数转罗马数字
    3. Longest Substring Without Repeating Characters 最长的子串不重复字符
    539. Minimum Time Difference 最小时差
    43. Multiply Strings 字符串相乘
    445. Add Two Numbers II 两个数字相加2
  • 原文地址:https://www.cnblogs.com/cqzhou/p/8619741.html
Copyright © 2011-2022 走看看