`
tinyhema
  • 浏览: 150577 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

shell脚本记录

 
阅读更多
shell
  • case语法
  • case "$1" in
            start)
                    start;;
            stop)
                    stop;;
            *)
                    usage;;
    esac
    

  • 查看系统32位还是64位
  • $uname -m
    x86_64
    
    $arch
    x86_64
    
    


    grep
  • grep命令hang住的问题
  • $ sh --version
    GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
    Copyright (C) 2005 Free Software Foundation, Inc.
    
    # 这行命令会一直卡住,直到按下ctrl+c终止命令执行后才会输出grep的结果
    $ grep "Full GC" gc.log  | cut -d' ' -f11
    
    # 可以通过cat + 管道的方式解决(需要注意如果文件特别大时,不适用cat命令)
    $ cat gc.log | grep "Full GC" | cut -d' ' -f11
    

  • 提取正则匹配的字段
  • # 文件内容
    $ cat gc.log
    27.427: [GC [PSYoungGen: 575772K->143524K(611072K)] 898332K->529514K(1079168K), 0.4843210 secs] [Times: user=0.87 sys=0.09, real=0.48 secs] 
    27.911: [Full GC [PSYoungGen: 143524K->0K(611072K)] [PSOldGen: 385990K->415894K(586240K)] 529514K->415894K(1197312K) [PSPermGen: 18180K->18180K(29824K)], 1.5263920 secs] [Times: user=1.50 sys=0.02, real=1.53 secs] 
    
    # 提取 real=xx secs 中间的 xx,也就是gc的时间 
    $ grep -Po "(?<=real\=).* (?=secs)" gc.log
    0.48 
    1.53 
    
    

  • 查看log
  • cat x.log|grep -Eo "[a-zA-Z]*Exception" | sort | uniq -c | sort -nr
    





    sed
  • 替换文件中的行
  • $ sed -i "s/<groups>.*<\/groups>/<groups>cat<\/groups>/g" pom.xml
    

  • 添加行
  • # /a 表示在正则匹配结果行的下一行插入
    sed -i '/\[mysqld\]/a\default-character-set=utf8' /etc/my.cnf
    
    # /i 表示在正则匹配结果行的前一行插入
    sed -i '/\[mysqld\]/i\default-character-set=utf8' /etc/my.cnf
    
    


    awk
  • 基本的awk命令
  • $ awk 'BEGIN {FS=" "} {print $0} END {}' a.txt
    # begin后面的{} 表示在awk命令最开始执行
    # FS 表示分隔符 
    # 中间的{} 表示对每一行的处理
    # end后面的{} 表示在最后执行
    

  • 分析gc日志,提取时间
  • # 如果第2列 GC,提取第6列数据相加,最后输出
    awk 'BEGIN {} {if ($2=="[GC") t+=$6} END { print t }' gc.log
    
    分享到:
    评论

    相关推荐

    Global site tag (gtag.js) - Google Analytics