• 一些shell脚本实例


    在群里也混了不少时间了.总结一些实例

    #统计QQ消息里面某个用户改名字的记录
    # awk -f
    # 聊改名字记录
    #特殊例子 例如
    #2013-11-28 9:23:56 北京-AA-Vip<123456789@qq.com>
    #2013-11-28 9:23:42 中山-BB(10570765)

    /^[0-9]+ [0-9:]+ [<(].*[>)] ?$/{
    next
    }
    
    /^[0-9-]+ [0-9:]+ .*[<(].*[>)] ?$/{
        QQ=gensub(/^[0-9-]+ [0-9:]+ [^(<]*[(<]([^)>]*)[)>]/,"\1",$0)
        NAME=gensub(/^[0-9-]+ [0-9:]+ ([^<(]*)[<(].*/,"\1",$0)
        if(A[QQ]==""){
            A[QQ]=NAME
            next
        }
        if(QQ in A){
            if(A[QQ]!=NAME){
                print QQ" :		"A[QQ]," ==> ",NAME
                A[QQ]=NAME
            }
        }
    }

    0,1,2,10,22,00,01,2,3,33
    得出下面的结果
    00,01,02,10,22,00,01,02,03,33

    方法1:
    echo '0,1,2,10,22,00,01,2,3,33' | awk -vRS=,  '{printf("%02d,",$1)}END{printf("")}'
    方法2:
    echo "0,1,2,10,22,00,01,2,3,33" | awk -vRS=, 'BEGIN{a=""}{b=sprintf("%02d",$0);a=a?a "," b:b;}END{print a}'

    求数值N以内的质数和

    awk -vmax=4 'BEGIN{nomax=0;yesmax=0;for(i=2;i<=max;i++){for(j=2;j<=sqrt(i);j++){if(i%j==0) break};if(j>sqrt(i)) yesmax+=i;else nomax+=i;}; print "非质数和=" nomax " 质数和=" yesmax}'

     有关字符串截取总结

    PS:大叔总结的很是经典,特在此记录
    看大键盘,$是字符串调用,左面的#就是左面操作,右面的%就是右面操作 一个符号是最小匹配,两个符号是最大匹配 例: tsbill:/work21>a="1/2/3/4/5" tsbill:/work21>echo ${a#*/} 2/3/4/5 tsbill:/work21>echo ${a##*/} 5 tsbill:/work21>echo ${a%/*} 1/2/3/4 tsbill:/work21>echo ${a%%/*} 1

     有关grep中正则表达式和通配符的注意事项

    在文本过滤工具里,都是用正则表达式,比如像awk,sed,等,是针对文件的内容的。 使用正则的时候需要添加-E选项
    
    而通配符多用在文件名上,比如查找find,lscp,等等。
  • 相关阅读:
    马氏距离的深入理解
    Mahalanobis Distance(马氏距离)
    Weka EM 协方差
    数据挖掘、概率分析与决策支持
    二、 Android中gravity与layout_gravity的区别
    一、 Android完全退出应用程序
    python configparse
    时间戳与时间互转
    python argparse
    时间插件
  • 原文地址:https://www.cnblogs.com/msccreater/p/3549867.html
Copyright © 2020-2023  润新知