• shell基础之书写需要用到的小工具


    一、简单介绍

    下面介绍几个可能不太常用但是面试题经常会用用到的小工具:

    命令:cut
    作用:截取某一个字段
      '-d' 后面跟分隔字符,把字段分割为若干个区间。
      '-c' 后面接的是第几个字符,也可以是一个区间n1-n2,还可以是多个数字n1,n2,n3.
      '-f' 后面接的是第几个区块,区块由分隔符分隔开.
    
    示例:使用cut以
    ":"为分隔符,截出/etc/passwd的第三段字符 cut -d: -f3 /etc/passwd
    命令:sort
    作用:用作排序
      '  ' 后面不跟参数默认对每一段的首字母进行ASCII升序排序
      '-t' 后面跟分隔符,用分隔符把字段分割为若干区间。跟cut的-d一个意思
      '-n' 使用纯数字排序
      '-r' 反向排序
      '-u' 去重复,有点类似uniq -c,更多使用的是后者
      '-kn1,n2' 由n1区间排序到n2区间,可以只写-kn1,即对n1字段排序,需要跟-t连用
    
    示例:使用sort以
    ":"为分隔符,对/etc/passwd文件的第5段排序 sort -t: -k5 /etc/passwd
    命令:wc
    作用:用于统计文档的行数、字符数、词数
      '-l' 统计行数
      '-m' 统计字符数
      '-w' 统计词数
    命令:uniq
    作用:去处重复的行,最常用的功能就这个
      '-c ' 统计重复的行数,并把行数写在前面
    
    注意:使用uniq 的前提是需要先给文件排序,否则不管用。
    命令:tr [-ds]
    作用:替换字符
      '-d' 后跟需要删除的某个字符
      '-s' 把重复的字符去掉
    
    示例:把大写变成小写 head
    -n2 /etc/passwd |tr '[a-z]' '[A-Z]'
    命令:tee filename
    作用:把文件写入后面所跟的文件中的同时,还显示在屏幕上
          类似与重定向 “>”, 但是比重定向多了显示的功能
    
    示例:如何把一个命令的输出内容不仅打印到屏幕上而且还可以重定向到一个文件内? cat
    /etc/passwd |tee 2.txt
    命令:split [-bl][num] filename NameYouWant
    作用:切割文档
      '-b' 依据大小分割文档,单位为byte,如果要以M为单位,可以这样写:split -b 10M file
      '-l' 依据行数来分割文档
    
    
    注意:如果split不指定目标文件名,则会以xaa,xab...这样的文件名存取切割后的文件 如果split指定了目标文件名,如Test,则会以Testaa,Testab来命名切割后的文件

    二、实例

        通过Apache访问日志access.log统计IP和每个地址访问的次数,按照访问量列出前十名。日志格式样例如下:

    192.168.1.247 - - [02/[ul/2015:23:44:59  [0800] "GET /[HTTP/1.1  200  19]"
    答案如下:
       awk '{print $1}' access.log|sort|uniq -c|sort -nr|head
  • 相关阅读:
    封装函数通过输入(元素,属性,目标值)改变div样式
    unicode键盘编码表
    js中的索引值
    JavaScript的三大组成部分
    阿望教你用vue写扫雷(超详细哦)
    关于换行以及换行属性
    html中的a标签详解
    利用GitHub Pages + jekyll快速搭建个人博客
    本博客文章转载,请注明出处
    git clone克隆项目太慢,或者直接导致克不下来的解决办法(转载请注明出处)
  • 原文地址:https://www.cnblogs.com/ImJerryChan/p/6035038.html
Copyright © 2020-2023  润新知