工欲善其事,必先利其器之——学好用好grep

man grep在这里插入图片描述

搜二进制文件

加-a 参数

 -a, --text
             Treat all files as ASCII text.  Normally grep will simply print “Binary file ... matches” if files contain binary characters.  Use of this option forces grep to output lines matching the specified pattern.

解决 “Binary file 文件名 matches” 的问题,有匹配但没法有输出内容。一般是日志文件输出时文件起始位有异常,导致日志文件被识别为二进文件了
![在这里插入图片描述](https://img-blog.csdnimg.cn/7ae310b4dc7648e6b2a6ec2fb5fcc82c.png

或表达式搜索

-E 加多个表达式

 grep -a  -E "test1|test2" *

与表达式搜索

即多次grep

grep "test1" 文件名 | grep "test2"

常用参数

统计行数 -c

有时候想知道搜索到的内容有多少行,可能大家会结合wc命令来使用,其它可以直接用 "-c参数"就行了
示例如下

$ grep -c "login" test.log
5
# 结合wc可能是这样用的
$ grep "login" test.log | wc
       5       5     196

显示颜色 --color

即搜索到的内容中关键字可以显示颜色,我使用的是iterm2,默认已经是显示的了
在这里插入图片描述
在这里插入图片描述

显示行号 -n

在这里插入图片描述

过滤内容 -v

可以结合 -E 过滤多个关键字(过渡多个内容)

$ grep -v -E "login|roc" test.log
root:x:0:0:root:/root:/bin/bash
(中间省略数十行)
test:x:502:502::/home/test:/bin/bash
leo:x:503:503::/home/leo:/bin/bash

忽略大小 -i

忽略大小写,即不区分大小写

$ grep -i "home" test.log
test:x:502:502::/home/test:/bin/bash
leo:x:503:503::/home/leo:/bin/bash
roc:x:504:504::/home/roc:/bin/bash
HOME

显示文件 -l or -L

列出搜索到的内容的文件,可搜索不到文件-L

$ grep -l "home" test.log
test.log

匹配单词 -w

强匹配的搜索

$ grep -w "HOME" test.log
HOME

基本正则表达式和扩展正则表达式

世界上的正则表达式种类繁多且复杂,面对这样的状况,POSIX 将正则表达式进行了标准化,并把实现方法分为了两大类:
基本正则表达式(BRE)
扩展正则表达式(ERE)
两者的区别,更多的是元字符的区别。
在基本正则表达式(BRE)中,只承认“^”、“$”、“.”、“[”、“]”、“*”这些是元字符,所有其他的字符都被识别为普通字符。
而在扩展正则表达式(ERE)中在扩展正则表达式(ERE)中,则在BRE的基础上增加了“(”、“)”、“{”、“}”、“?”和“+”、“|”等元字符。

参考文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值