• 就linux三剑客简单归纳


    就linux三剑客简单归纳:
    1:awk 
    
    习题1:用 awk 中查看服务器连接状态并汇总
    netstat -an|awk '/^tcp/{++s[$NF]}END{for(a in s)print a,s[a]}'
    ESTABLISHED 1
    LISTEN 20
    习题2:统计 web 日志访问流量,要求输出访问次数,请求页面或图片,每个请求的总大小, 总访问流量的大小汇总
    awk '{a[$7]+=$10;++b[$7];total+=$10}END{for(x in a)print b[x],x,a[x]|"sort -rn";print "total size is :"total}' /app/log/access_log
    total size is :172230 
    21 /icons/poweredby.png 83076 
    14 / 70546 
    8 /icons/apache_pb.gif 18608
    
    awk基本用法:awk –F [:” ”] ‘BEGIN{事件}{事件}END{事件}’
    它里面可以用到if,for,数组等类c的语法,其中数组下标除了可以是数字外还可以是字符串,这就大大增强了它的文本统计能力。在awk里变量可以不用先定义,可以直接用,初始值为0。
    关于逗号的用法:
    Awk和sed里都可以用,用法为awk ‘/A/,/B/ {事件}END{事件}’ filename 匹配所有符合从字符A到第一个字符B的内容并后面事件处理
    Sed –n ‘/A/,/B/p’ filename 匹配所有符合从字符A到第一个字符B的内容并输出到屏幕
    
    2:sed
    
    常用参数:
    -I 直接修改文档读取的内容,不在屏幕上输出
    -n 当选项-n和命令p同时出现时,sed 可打印选定的内容 
    -r Sed 使用扩展正则
    
    3:grep
    
    常用参数:
    -I  忽略字符大小写的差别
    -w 精确查找指定字符串,找到了就返回字符所在的那一行
    -o 查找指定字符,仅返回查找的内容,一般加E配合,查找正则表达式
    -E 选项使用扩展正则表达式
    
    练习:
    在下面文本内容里统计device{}里的key的数量,其他地方的key不算。假如filename为case.log:
    
    key is a linuxer.
    device: {
    oo
    key key key
    no sql
    this is log
    niu niu
    }
    key
    device: {
    key key
    no sql
    this is log
    niu niu
    }
    key key
    device: {
    key key
    no sql
    this is log
    niu niu
    }
    device: {
    key key
    no sql
    this is log
    niu niu
    }
    Key
    
    个人解答方法:
    1:
       awk '/^device :{/,/}/ {for(i=1;i<=NF;i++) if($i~/oldboy/) ++count;} END{print count}' case.log
    解释:先匹配所有符合device开头且每次匹配到第一个}的内容,再在每行的每个字段进行匹配key,最后输出key的num值。
    2:
       Sed –n ‘/device :{/,/}/p’ case.log | tr “ ” “
    ”| grep –w “key”| wc -l
    解释:先用sed进行匹配device里的所有含key的行,在用tr把空格换成换行,再用grep去匹配key的行(每行一个字符段),最后用wc –l统计行的数量及为key的num值。
    3:
       Sed –n ‘/device :{/,/}/p’ case.log | awk –F “ ” ‘{for(i=0;i<=NF;i++) if($i~/key/) ++count} END{print count}’
    
    sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出。如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序。
    常用参数:
    -n :使用『纯数字』进行排序(默认是以文字型态来排序的); -r :反向排序; -t :分隔符,默认是用 [tab] 键来分隔; -k :以那个区间 (field) 来进行排序的意思 sort 是默认以第一个数据来排序,而且默认是以字符串形式来排序,默认从小到大顺序。 cat /etc/passwd | sort -t ':' -k 3 第三栏来排序,小到大 uniq命令可以去除排序过的文件中的重复行,因此uniq经常和sort合用。也就是说,为了使uniq起作用,所有的重复行必须是相邻的。
    常用参数:
    -i :忽略大小写字符的不同 -c :进行计数 -u :只显示唯一的行 -d :仅显示存在重复的行 cut命令可以从一个文本文件或者文本流中提取文本列。 常用参数:
    -c :以字符为单位进行分割
    -d :后面接分隔字符。与 -f 一起使用; -f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思; echo $PATH | cut -d ':' -f 5 找出第五个路径 echo $PATH | cut -d ':' -f 1-3,5 找出第一到第三个路径 echo $PATH | cut -d ':' -f 3- 找出第三到最后一个路径 wc命令统计文件里面有多少行,多少单词,多少字符。 常用参数: -l :仅列出行; -w :仅列出多少字(英文单字); -m :多少字符;

    tee命令读取标准输入的数据,并将其内容输出成文件。

    参  数:
    -a或  附加到既有文件的后面,而非覆盖它;
    [root@localhost ~]# who | tee who.out
    root     pts/0        2009-02-17 07:47 (123.123.123.123)
    [root@localhost ~]# cat who.out
    root     pts/0        2009-02-17 07:47 (123.123.123.123)
    [root@localhost ~]# pwd | tee -a who.out
    /root
    [root@localhost ~]# cat who.out
    root     pts/0        2009-02-17 07:47 (123.123.123.123)
    /root

    paste命令用于合并文件的列,paste指令会把每个文件以列对列的方式,一列列地加以合并。

    参数

      -d<间隔字符>  用指定的间隔字符取代跳格字符;

      -s  串列进行而非平行处理;

  • 相关阅读:
    qt 学习(三)消息基础
    qt学习(二)控件
    sqlserver学习_01
    java对文件操作--01
    js 将json字符串转换为json对象的方法解析
    实现动态代理(Java和spring)
    mysql_01_游标的使用
    java实现多文件上传01
    oracle-2_dblink的创建和使用
    sqlserver学习3---sql函数
  • 原文地址:https://www.cnblogs.com/zengjieboke/p/7010590.html
Copyright © 2020-2023  润新知