查看日志命令(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复制代码
相关文章
相关标签/搜索