查看日誌命令(grep sed awk cat tail less sort)

1、grep命令詳解
主要用於日誌條件過濾
一、關鍵字查找

grep '關鍵字' 日誌文件
grep 'Exception' catalina.out複製代碼

二、查看關鍵字上下文php

-A afterhtml

-B before
-C A+B

grep 'lalal' -A 3 -B 5   catalina.out複製代碼
三、過濾不存在某個關鍵字日誌

grep -v 'lalal' catalina.out複製代碼

2、sed
一、正則過濾

sed -n '/^2019-07-16.*修改用戶信息/p'  catalina.out      # 以2019-07-16開頭 包含修改用戶信息 
gsed -n '/^M.*6.0.*0$/p' tmp                           # M開頭 中間包含6.0 以0結尾
sed -n '/^[0-9]\{5\}$/p' number.txt                    # 匹配有連續5個數組的 此處的\是用來轉移{}的
gsed -n '/\b123\b/ p' number.txt                       # 過濾只包含123的,1234不包含在內 \b字符邊界
gsed -n '260784,260785p' userActivite.txt              # 查看指定行複製代碼

二、正則替換
注 mac下 i 參數是必填

sed -i 'a' 's/Beth/aaa/g' tmp複製代碼
會生成一個tmpa備份文件
全部命令前加g -> gsed、gcat、gls

brew install coreutils
brew install gnu-sed複製代碼
四、直接修改文件 i
gsed -i '7a TMD' tmp gsed -i 's/\.$/\!/g' regular_express.txt #結尾的.換成! $表示結尾

3、awk
一、格式化文本
php parse.php | awk '{if($1 == "suppliers_id" && $3==1) printf("update d_goods set suppliers_id = %s where goods_sn =\"%s\";\n",$4,$2 )}'
二、打印行號
{ print NR, $0 }
三、格式化打印

{ printf("%-8s $%6.2f\n", $1, $2 * $3) }複製代碼
四、NF、NR
NF 表示列數
NR 表示行數
五、BEGIN與END
特殊模式 BEGIN 用於匹配第一個輸入文件的第一行以前的位置, END 則用於匹配處理過的最後一個文件的最後一行以後的位置。
打印行數

awk 'END { print NR, "employees" }' tmp複製代碼

4、less
該命令是日誌的瀏覽

5、tail
一、實時查看末尾100行

tail -100f catalina.out複製代碼

6、sort
sort默認是從小到大 -r逆序 -k指第幾列 -n爲按照數值大小排序
一、從小到大取最後三行

grep "2014-02-*" gpdata.txt | sort -n -k7 | tail -3複製代碼
二、從大到小取頭頭三行

grep "2014-02-*" gpdata.txt | sort -n -k7 -r | head -3複製代碼

7、wc
  • -c或--bytes或--chars 只顯示Bytes數。
  • -l或--lines 只顯示行數。
  • -w或--words 只顯示字數。
    舉個🌰

wc testfile testfile_1 testfile_2  #統計三個文件的信息 
3 92 598 testfile                    #第一個文件行數爲三、單詞數9二、字節數598 
9 18 78 testfile_1                   #第二個文件的行數爲九、單詞數1八、字節數78 
3 6 32 testfile_2                    #第三個文件的行數爲三、單詞數六、字節數32 
15 116 708 總用量                    #三個文件總共的行數爲1五、單詞數11六、字節數708複製代碼
相關文章
相關標籤/搜索