【刷題】麪筋-linux統計文件中字符串次數及文件夾下特定類型文件個數

法1:grep+wc

單個字符串

  • 語法:grep -o targetStr filename | wc -llinux

    • grep輸出,wc -l按行統計,
    • 不加參數-o:每行重複只統計一個;
    • 加參數-o:一條數據裏面有多個相同,會統計相同的次數
    • 注:單個字符串,字符串部分能夠不加引號
  • 示例:vim

    • 如:統計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優點會更加明顯

===========================================.net

其餘

統計多個文件

  • 統計/logs/task-hbase-transform/路徑下,每一個文件中Exception關鍵字出現的次數,日誌

  • 腳本統計:vim countex.sh 加入如下code

#!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.shorm

  • 執行腳本:sh countex.shblog

  • 查看統計結果:cat ex.log字符串

統計文件夾下特定類型文件個數

  • 統計文件夾下/mount/taskdata 以.log結尾的文件數量get

  • find /mount/taskdata -name *.log |wc -l #find查找特定類型並統計io

  • 或者

  • ls /mount/taskdata/*.log |wc -l #ls列出特定類型並統計

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

參考連接

END

相關文章
相關標籤/搜索