linux shell useful command

 Linux系统通过shell提供了大量方便的工具,如:awk、grep、sort、more、less、tail等等,方便程序员或者从事数据分析的人员对一些小文件的快速分析,掌握好这些工具,可以极大地提高简单数据分析的效率。

工具/原料

  • Linux系统

一、awk常用技巧和方法

  1. 1

    文件每行按第二列去重并打印第二列不同的值及出现次数:

    awk -F"\t" '{a[$2]+=1}END{for(x in a) print x"\t"a[x]}' a

  2. 2

    求两个文件中第一列数据的交集:

    假设文件名为a和b,文件每行用\t分隔

    awk -F"\t" 'ARGIND==1{a[$1]=1}ARGIND==2{if($1 in a) print}' a b

    其中:

    -F表示指定每行的分隔符

    ARGIND==1表示处理第一个文件

    END

二、grep常用技巧和方法

  1. 1

    把文件中包含china的行打印出来:

    grep "china" a

    把文件中以china字符串起始的行打印出来:

    grep "^china" a

  2. 2

    把文件中出现在abc和xx之间的字符串打印出来:

    grep -o -P "(?<=abc).*?(?=xx)" a

    END

三、sort命令常用技巧和方法

  1. 1

    对文件先按第二列排序,再按第三列排序,每列之间用空格分开:

    sort -t' ' +1 -2 +2 -3 file

    END

四、组合用法

  1. 1

    统计accesslog日志中的各ip出现次数,并按次数从小到大排序:

    awk  '{a[$1]+=1}END{for(x in a) print x,a[x]}' file | sort +1rg -2 > file.output

  2. 2

    文件中包含有china的行数:

    grep "china" file | wc -l

  3. 3

    查看线上实时滚动日志中带有warning的日志:

    tail -f file.log | grep "warning"

    END

五、其它常用shell脚本

  1. 1

    对一个100w行的文件A随机取100行:

    cat A | shuf -n 100

  2. 2

    在/home目录下面查询以.log结尾的文件并统计文件总大小:

    find /home -name *.log | xargs du -s | awk '{print;sum+=$1}END{print sum}'

    删除/home目录下面的所有.svn文件:

    find /home -name .svn | xargs rm -rf

猜你喜欢

转载自wuchengyi.iteye.com/blog/2082054