shell 三剑客-grep

shell 三剑客是指在Linux/Unix系统下使用最广泛的命令行工具:grep、sed、awk
三剑客都是文本处理工具 可用于搜索、替换和处理大量文本数据,三者通常是和正则表达式一起使用
正则表达式

\       转义符,将特殊字符进行转义,忽略其特殊意义
^       匹配行首,awk中,^则是匹配字符串的开始 
$       匹配行尾,awk中,$则是匹配字符串的结尾
^$      表示空行
.       匹配除换行符\n之外的任意单个字符
.*      匹配所有
[ ]     匹配包含在[字符]之中的任意一个字符
[^ ]    匹配[^字符]之外的任意一个字符
[ - ]   匹配[]中指定范围内的任意一个字符
?       匹配之前的项1次或者0次
+       匹配之前的项1次或者多次
*       匹配之前的项0次或者多次, .*
()      匹配表达式,创建一个用于匹配的子串 
{ n }   匹配之前的项n次,n是可以为0的正整数
{n,}    之前的项至少需要匹配n次
{n,m}   指定之前的项至少匹配n次,最多匹配m次,n<=m
|       交替匹配|两边的任意一项ab(c|d)匹配abc或abd

三剑客–grep
grep 擅长查找过滤
可以通过grep --help 查看
常用参数


-i:忽略大小写
-l:只输出包含匹配字符的文件名
-n:显示匹配行及行号
-v:显示不包含匹配文本的所有行
-o:只显示匹配字符串的部分
-c:只输出匹配行的计数
-r:递归查询
-h:不显示匹配行所在文件名
-H:同时显示行和文件名
-A<显示列数>或--after-context=<显示列数>:显示匹配行下?行
-B<显示列数>或--before-context=<显示列数>:显示匹配行上?行
-C<显示列数>或--context=<显示列数>或-<显示列数>:显示匹配行前后?行
-E:扩展正则表达式
-F:固定字符串搜索
-G:基本正则表达式
-q:静默模式,不输出任何信息,通过echo $?查看是否匹配到指定字符串
-s:不显示不存在或无匹配文本的错误信息
 -w, --word-regexp         强制 PATTERN 仅完全匹配字词
 -x, --line-regexp         强制 PATTERN 仅完全匹配一行
 -z, 一个 0 字节的数据行,但不是空行

1.过滤以#开头的行和空白行
egrep 是grep 的变体 默认使用扩展正则表达式,使egrep 处理复杂模式更灵活
grep 默认使用基础表达式 -E 默认使用基础正则表达式
grep 通常更快

egrep -v -n "^#|^$" 文件名称

在这里插入图片描述

grep -E -v -n "^#|^$" 文件名称

在这里插入图片描述
匹配任意字符,过滤空行

grep -n "." 文件名称

在这里插入图片描述
找到.sh文件 查找包含for关键的文件显示行数
.表示当前目录
xargs 能够捕获一个命令的输出,然后传递给另外一个命令。由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令

 find . -name "*.sh" | xargs grep  -in "for*"

在这里插入图片描述
查找重复连续出现2次以上,必须是连续哦

 grep -Eni "(重复){2,}" 03.sh

在这里插入图片描述
错误语法:缺少(),如果是查找多个字符,需要(),单个字符可不需要
在这里插入图片描述在这里插入图片描述
多个关键字组合使用时
表达and关系,使用 .*
表达or关系,使用 |

#两个关键字的顺序不是固定的,可以是乱序的,如果要固定就只写"测试.*重复" 或者"重复.*测试"
 grep -Eni "测试.*重复|重复.*测试" 03.sh

在这里插入图片描述

 grep -Eni "echo|参数" 03.sh

在这里插入图片描述
查看最近有哪些IP以root身份登陆过我们的机器,统计每个IP登陆的次数。我们的思路如下:

1.通过last列出最近登陆系统的所有用户。
2.过滤出以root登陆系统的IP。
3.过滤出远程登陆的IP。
4.统计出每个IP登陆的次数。
uniq -c 统计出现的次数

#注意:'{print $3}' 使用的单引号
last |grep "root" |awk '{print $3}'|sort | uniq -c

在这里插入图片描述

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值