grep find egrep

grep

个人觉得egrep比较好用,感觉改良了grep的一些不可以直接操作的东西,但是总体来说还是没太大区别的,都是一个过滤工具。

grep 和 egrep 都要通过 正则表达式来筛选我们想要的东西,只能筛选文本内容,不能对目录筛选,如果想筛选目录可以通过管道把目录传过去,或者把目录存到文件里头再筛选

1…查询文件/logs/foo.log以”abc”结尾的行。

答案:
grep “abc$” /logs/foo.log

2.多个文件中查找关键字

[root@room9pc01 ~]# grep “root” /etc/passwd /etc/hosts
/etc/passwd:root❌0:0:root:/root:/bin/bash
/etc/passwd:operator❌11:0:operator:/root:/sbin/nologin

3.-o 是只显示匹配到的字符

[root@nginx ~]# grep -o root /etc/passwd
root
root
root
root

4.-i是忽略大小写

5.-v是取反的意思

4.使用grep 统计当前文件夹的目录已经文件的个数

  1. 统计当前文件夹下文件的个数以及目录的个数:
文件个数统计
[root@king shell]# ls -l |grep "^-"|wc -l
14
目录个数的统计
[root@king shell]# ls -l | cut -c 1 | grep "d" | wc -l
2
[root@king shell]# ls -l |grep "^d"|wc -l
2
统计文件夹下目录的个数,包括子文件夹里的:
[root@king shell]# ls -lR|grep "^d"|wc -l
2

find

####1.查找/logs目录下前缀为access的文件并删除
答案:
find /logs -type f -name “access*” -exec rm -rf {} ;

2. 写一个脚本查找最后创建时间是三天前,后缀是*.log 的文件并删除。

答案:
find dir/ -mtime +3 -type f -name “.*.log” -exec rm -rf {} ;

####3. 写一个脚本将某目录下大于 100k 的文件移动至/tmp 下。
答案:
find dir/ -type f -size +100k -exec mv {} /tmp ;

5、grep -A -B -C 的使用

  • 这三个选项,经常在过滤日志的时候使用到。不用打开日志文件并可以查看到日志内容
    使用起来非常的方便

-A -B -C 后面都跟阿拉伯数字
-A是显示匹配后和它后面的n行。
-B是显示匹配行和它前面的n行。
-C是匹配行和它前后各n行。
总体来说,-C覆盖面最大。用它保险些。哈哈。这3个开关都是关于匹配行的上下文的(context)。

于是

grep -A 4 wikipedia 密码文件.txt
1
就是搜索密码文件,找到匹配“wikipedia”字串的行,显示该行后后面紧跟的4行。

cat info.log.2019-07-31* | grep -C 50 "13802885143"
使用该命令,有以下几个注意事项
1、-A  -B  -C  必须大写
2、 -A  -B  -C  后面加的是阿拉伯数字
3、-A  -B  -C  后面的关键字需要使用双引号,引住

5、 grep -E

  • 背景 在过滤日志的时候,经常会有两个关键字进行过滤
  • 这也是精准匹配和模糊匹配
两个关键字只有匹配一个就可以过滤出来
zcat info.log.2019-08-04* | grep -E "1564888980379|13972782679"

两个关键字只有一个匹配就可以匹配出来,并显示附件的50行
zcat info.log.2019-08-04* | grep -E -C 50 "1564888980379|13972782679"

两个关键字,两个都匹配了,才可以显示
zcat info.log.2019-08-04* | grep 13972782679  | grep yxbAwardUrl

两个关键字,两个都匹配了。才可以显示,并显示附件的10行
zcat info.log.2019-08-04* | grep -C 5 "13972782679"  | grep -C 5 "yxbAwardUrl"

这是一个过滤日志时跟正则表达式发生冲突时,使用的过滤方法

cat debug.log.2019-08-27.bak  | awk -F , '/已兑换数量:/{print $5}' | awk -F : '{prin$2}' | awk -F [ '{print $2}' | awk -F ] '{print $1}' | grep -c 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维螺丝钉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值