zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    SpringCloud系列——TX-LCN分布式事务管理
    SpringCloud系列——限流、熔断、降级
    SpringBoot系列——Logback日志,输出到文件以及实时输出到web页面
    常用的js、java编码解码方法
    WebSocket数据加密——AES与RSA混合加密
    使用Fiddler重定向App的网络请求
    C# 调用 taskkill命令结束服务进程
    Install .Net Core For CentOS
    cron表达式详解[转]
    WinServer远程部署系统打包批处理文件
  • 原文地址:https://www.cnblogs.com/ImJerryChan/p/6035038.html
Copyright © 2011-2022 走看看