正则grep
什么是正则:
正则就是一串有规律的字符串。
正则三剑客:
grep/egrep (egrep是grep的扩展),sed, awk
grep
grep过滤指定关键词
[root@localhost grep]# grep 'nologin' passwd
-c 行数
[root@localhost grep]# grep -c 'nologin' passwd
15
-i 不区分大小写
[root@localhost grep]# grep -i 'nologin' passwd
-n 显示行号
[root@localhost grep]# grep -n 'nologin' passwd
-v 取反
把除了nologin外的所有
[root@localhost grep]# grep -vin 'nologin' passwd
-r遍历子目录和孙目录
[root@localhost grep]# grep -r 'root' /etc/
可以把过滤到的字符串重定向到文件中,然后从文件中查找相应的字符串
[root@localhost grep]# grep -r 'root' /etc/ > /tmp/grep.log
[root@localhost grep]# grep passwd /tmp/grep.log
/etc/passwd:root:x:0:0:root:/root:/bin/bash
/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin
/etc/passwd-:root:x:0:0:root:/root:/bin/bash
/etc/passwd-:operator:x:11:0:operator:/root:/sbin/nologin
/etc/postfix/main.cf:# the system passwd file in the chroot jail is just not practical.
-A 后面跟数字,过滤出符合要求的行以及下面n行
例如当前符合要求的行,以及下面的n行
[root@localhost grep]# grep -nA2 'root' passwd
1:root:x:0:0:root:/root:/bin/bash
2-bin:x:1:1:bin:/bin:/sbin/NOLOGIN
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
10:operator:x:11:0:operator:/root:/sbin/nologin
11-games:x:12:100:games:/usr/games:/sbin/nologin
12-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
-B 也是一样,后面跟数字,列出符合要求的当前行,以及行上面的n行
[root@localhost grep]# grep -nB2 'root' passwd
1:root:x:0:0:root:/root:/bin/bash
--
8-halt:x:7:0:halt:/sbin:/sbin/halt
9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
-C 也是一样,后面跟数字,列出符合要求的当前行,以及行上面n行和行后面n
[root@localhost grep]# grep -nC2 'root' passwd
1:root:x:0:0:root:/root:/bin/bash
2-bin:x:1:1:bin:/bin:/sbin/NOLOGIN
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
8-halt:x:7:0:halt:/sbin:/sbin/halt
9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11-games:x:12:100:games:/usr/games:/sbin/nologin
12-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
显示文件中的数字(红色高亮显示数字)
[root@localhost grep]# grep '[0-9]' passwd
不显示文件中带有数字的字符
grep -v '[0-9]' passwd
-n是显示行数,-v取反,意思是不显示数字的,并且显示行数。
[root@localhost grep]# grep -vn '[0-9]' /etc/inittab
以井号开头的行:
'^#'
显示以井号开头的行
[root@localhost grep]# grep -n '^#' inittab
显示不以井号开头的行:
grep -nv '^#' inittab
[root@localhost grep]# grep -nv '^#' inittab
9:jhsdjhsajdhjashdj
显示非数字的字符:非数字字符高亮
[root@localhost grep]# grep '[^0-9]' inittab
显示非数字开头的行:
[root@localhost grep]# grep '^[^0-9]' inittab
^ 放到[]方括号里面意思是取反,^放到开头意思是以什么字符开头。
grep 'r.o' 表示 . 点表示任意一个字符
[root@localhost grep]# grep 'r.o' passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
grep ‘o*o’ * 号 表示o o中间n个字符
[root@localhost grep]# grep 'o*o' passwd
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
grep '.*' 会匹配所有字符。 .表示任意一个字符,*表示所有字符
[root@localhost grep]# grep 'xiaobo.*' passwd
xiaobo:x:1000:1000::/home/xiaobo:/bin/bash
grep 'o\{2\}' passwd; \表示脱义;
‘o\{2\}’表示o出现两次。
[root@localhost grep]# grep 'o\{2\}' passwd
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
'o\{0,3\}' 从0到3都匹配,就是说o出现0次、1次、2次、3次;
[root@localhost grep]# grep 'o\{0,3\}' passwd
去掉脱义符,用egrep 'o{2}' passwd 表示o出现两次
[root@localhost grep]# egrep 'o{2}' passwd
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
也可以用 grep -E 'o{2}' passwd
[root@localhost grep]# grep -E 'o{2}' passwd
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
grep -E '(oo){2}' passwd 表示出现4个o
[root@localhost grep]# grep -E 'o{4}' passwd
ooooqq
osdaoooo
grep 'o\+o' passwd +加号 表示1个或者多个o
[root@localhost grep]# grep 'o\+o' passwd
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
ooooqq
osdaoooo
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
不脱义,用egrep
egrep 'o+o' passwd
epgrep 'o+t' passwd
[root@localhost grep]# egrep 'o+t' passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
egrep 'o?t' passwd ?问号表示0或1个 问号前面的字符
[root@localhost grep]# egrep 'o?1o' passwd
postfix:x:89:89::/var/spool/postfix:/sbin/n1ogin
cho1orony:x:998:996::/var/lib/chrony:/sbin/nologin
grep -E 'root|nologin' passwd 匹配root或者nologin字符
[root@localhost grep]# grep -E 'root|nologin' passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
不区分大小写 -i
grep -Ei 'root|nologin' passwd 匹配root或者nologin字符
正则grep的更多相关文章
- 正则grep 使用介绍
第6周第3次课(4月25日) 课程内容: 9.1 正则介绍_grep上9.2 grep中9.3 grep下扩展把一个目录下,过滤所有*.php文档中含有eval的行grep -r --include= ...
- shell脚本-正则、grep、sed、awk
----------------------------------------正则---------------------------------------- 基础正则 ^word ##搜索以w ...
- 通过grep来进行日志分析,grep -C和配合awk实际对catalina.out使用案例
本文介绍通过grep来进行日志分析,主要介绍grep -C和配合awk实际对catalina.out使用案例 grep可以对日志文件进行筛选,统计,查询,快速定位bug. 首先,你的日志需要比较规范, ...
- info grep半翻译加整理
内容来源基本上是整理info grep而来,当然只整理了关于用法的部分.有些地方给出了些解释,算是对grep的一个细节概述吧. 1.1 grep选项 grep家族:grep -G或者grep使用基本正 ...
- 正则表达式与grep
一.回溯引用 1.将页面中合法的标题找出来,使用回溯引用匹配 (需要使用 -E 或 -P 来扩展grep语法支持) 2.查找连续出现的单词 二.前后查找 (grep 只能使用 -P 选项) 1. 向前 ...
- awk\sed\grep 补充
# awk\sed\grep 补充 以上命令中字符 / 在sed中作为定界符使用,也可以使用任意的定界符 sed's:test:TEXT:g' sed's|test|TEXT|g' 定界符出现在样式内 ...
- grep和sed匹配多个字符关键字的用法
GNU sed和UNIX sed 写法不一样 匹配多个关键词,打印出匹配的行,效果类似于 grep grep hello\|world file > output 或者用扩展正则 grep -E ...
- sed实战、find实战、grep实战
1.find实战 # 删除指定文件(三种方法) find /data/ -type f -name "*.log" -exec rm {} \; find /data/ -type ...
- 正则表达式grep学习(一)
文本处理三剑客grep 文本过滤sed 流过滤awk 格式处理 正则表达式就是一些特殊字符组成的模式,赋予了他特定的含义 在大多数程序里,正则表达式都被置于两个正斜 ...
随机推荐
- java 多线程 25 :线程和线程组的异常处理
线程中出现异常 从上面代码可以看出来处理线程的异常 设置异常的两种方式 1.全局异常,也是静态异常,是个静态方法 , 类.setDefaultUncaughtExceptionHandler() 2. ...
- 有了#ifdef 为什么还需要#if defined
有了#ifdef 为什么还需要#if defined ? #include <stdio.h> #define A #define B void test(int a,int b) { ...
- phpstorm设置断点过程
1.为php安装xdebug,方法在上一篇中有详细介绍 2.注意这个时候需要修改php.ini内容如下: [Xdebug]zend_extension_ts ="d:/wamp/php/ex ...
- DFI、DPI技术
废话: 因为xxoo的缘故接触到这个设备.但是就是单纯的去看并没有去研究它是个啥玩意.刚才无聊就百度科普了一波. DFI以及DPI简单通俗以自己的理解来将就是网络带宽的一种检测技术.既然是检测技术也就 ...
- HTTP1.1 协议
Response Headers 响应头 Expires 设置响应内容的过期时间 过期时间头信息属性值只能是HTTP格式的日期时间,HTTP的日期时间必须是格林威治时 间(GMT),而不是本地时间.举 ...
- CAS (14) —— CAS 更多用户信息
CAS (14) -- CAS 更多用户信息 摘要 将更多用户信息写入到service验证返回消息中 版本 tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 cas ...
- Knockout开发中文API系列3–使用计算属性
计算属性 如果你已经有了一个监控属性 firstName和lastName,如果你想显示全名该怎么做呢?这个时候你就可以通过计算属性来实现,这个方法依赖于一个或多个监控属性,如果任何依赖对象发生改变他 ...
- Hbase 学习(三)Coprocessors
Coprocessors 之前我们的filter都是在客户端定义,然后传到服务端去执行的,这个Coprocessors是在服务端定义,在客户端调用,然后在服务端执行,他有点儿想我们熟悉的存储过程,传一 ...
- WebRTC 源码分析(二):安卓预览
有过一定相机开发经验的朋友可能会疑惑,预览还有什么好分析的,不是直接 camera.setPreviewDisplay 或者 camera.setPreviewTexture 就能在 SurfaceV ...
- MFC宏
1,DECLARE_MESSAGE_MAP:在头文件中声明源文件中所含有的消息映射 2,BEGIN_MESSAGE_MAP:标记源文件消息映射的开始 3,END_MESSAGE_MA:标记源文件消息映 ...