一、grep命令详解
主要用于日志条件过滤
1、关键字查找
grep '关键字' 日志文件
grep 'Exception' catalina.out2、查看关键字上下文
-A after
-B before
-C A+B
grep 'lalal' -A 3 -B 5 catalina.out3、过滤不存在某个关键字日志
grep -v 'lalal' catalina.out二、sed
1、正则过滤
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 # 查看指定行2、正则替换
注 mac下 i 参数是必填
sed -i 'a' 's/Beth/aaa/g' tmp会生成一个tmpa备份文件
所有命令前加g -> gsed、gcat、gls
brew install coreutils
brew install gnu-sed4、直接修改文件 i
gsed -i '7a TMD' tmp
gsed -i 's/\.$/\!/g' regular_express.txt #结尾的.换成! $表示结尾
三、awk
1、格式化文本
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 )}'
2、打印行号
{ print NR, $0 }
3、格式化打印
{ printf("%-8s $%6.2f\n", $1, $2 * $3) }4、NF、NR
NF 表示列数
NR 表示行数
5、BEGIN与END
特殊模式 BEGIN 用于匹配第一个输入文件的第一行之前的位置, END 则用于匹配处理过的最后一个文件的最后一行之后的位置。
打印行数
awk 'END { print NR, "employees" }' tmp四、less
该命令是日志的浏览
五、tail
1、实时查看末尾100行
tail -100f catalina.out六、sort
sort默认是从小到大 -r逆序 -k指第几列 -n为按照数值大小排序
1、从小到大取最后三行
grep "2014-02-*" gpdata.txt | sort -n -k7 | tail -32、从大到小取头头三行
grep "2014-02-*" gpdata.txt | sort -n -k7 -r | head -3七、wc
- -c或--bytes或--chars 只显示Bytes数。
- -l或--lines 只显示行数。
- -w或--words 只显示字数。
举个🌰
wc testfile testfile_1 testfile_2 #统计三个文件的信息
3 92 598 testfile #第一个文件行数为3、单词数92、字节数598
9 18 78 testfile_1 #第二个文件的行数为9、单词数18、字节数78
3 6 32 testfile_2 #第三个文件的行数为3、单词数6、字节数32
15 116 708 总用量 #三个文件总共的行数为15、单词数116、字节数708