zoukankan      html  css  js  c++  java
  • 【刷题】面筋-linux统计文件中字符串次数及文件夹下特定类型文件个数

    法1:grep+wc

    单个字符串

    • 语法:grep -o targetStr filename | wc -l

      • grep输出,wc -l按行统计,
      • 不加参数-o:每行重复只统计一个;
      • 加参数-o:一条数据里面有多个相同,会统计相同的次数
      • 注:单个字符串,字符串部分可以不加引号
    • 示例:

      • 如:统计task-hbase-transform.log中NullPointerException出现的次数
      • grep NullPointerException task-hbase-transform.log|wc -l

    多个字符串

    • 语法:grep -o targetStr_1|targetStr_2|targetStr_3…… filename | wc -l
      • 与单个字符串的区别:用"|"连接多个字符串,其他相同。
      • 注:必须加引号(单、双都可以),不加引号结果不正确。

    参数-o

    • grep -o:一条数据里面有多个相同,会统计相同的次数
    • grep:一条数据里面有多个相同,会统计一次次数

    法2:awk

    语法1:

    • awk -v RS="@#$j" '{print gsub(/targetStr/,"&")}' filename

    语法2:

    • awk '{s+=gsub(/targetStr/,"&")}END{print s}' filename

    两种方法对比

    • 小文件第一种方法最快0.003s,awk最快0.002s,一般都是比前者快
    • 当文件大的时候awk优势会更加明显

    ===========================================

    其他

    统计多个文件

    • 统计/logs/task-hbase-transform/路径下,每个文件中Exception关键字出现的次数,

    • 脚本统计:vim countex.sh 加入以下

    
    #!bin/sh
    for file in /logs/task-hbase-transform/* #日志文件路径
    do
        if test -f $file #如果是文件,统计异常数量,并输出到ex.log
        then
             e=`grep Exception "$file"|wc -l` #按行统计并输出
             echo "Exception--"$file"--"$e >>ex.log #把统计内容输出到ex.log中
            #echo $file 是文件   >> c.log
        else
            echo $file 是目录
        fi
    done
    
    • 添加执行权限:chmod +x countex.sh

    • 执行脚本:sh countex.sh

    • 查看统计结果:cat ex.log

    统计文件夹下特定类型文件个数

    • 统计文件夹下/mount/taskdata 以.log结尾的文件数量

    • find /mount/taskdata -name *.log |wc -l #find查找特定类型并统计

    • 或者

    • ls /mount/taskdata/*.log |wc -l #ls列出特定类型并统计

    • 文件内查找用grep,查找文件用find

    参考链接

    END

  • 相关阅读:
    手写token解析器、语法解析器、LLVM IR生成器(GO语言)
    Windows下切分文件(GnuWin32)
    转载:教你分分钟搞定Docker私有仓库Registry
    marathon传参一
    DC/OS安装
    自己写编程语言-m语言
    揽货最短路径解决方案算法
    揽货最短路径解决方案算法
    用keras作CNN卷积网络书本分类(书本、非书本)
    用keras做SQL注入攻击的判断
  • 原文地址:https://www.cnblogs.com/anliux/p/12846395.html
Copyright © 2011-2022 走看看