码迷,mamicode.com
首页 > 其他好文 > 详细

正则/grep

时间:2018-01-16 10:21:15      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:src   mon   正则介绍   halt   符号   字符   首字母   c89   编程语言   

正则介绍

什么是正则

* 正则就是一串有规律的字符串
* 掌握好正则对于编写shell脚本有很大帮助
* 各种编程语言中都有正则,原理都是一样的

grep

grep;过滤所有含有nologin的字符串(在Centos7中过滤的字符会标红)

[root@Ask-02 演示]# grep ‘nologin‘ passwd

技术分享图片
-c;查看有多少行

[root@Ask-02 演示]# grep -c ‘nologin‘ passwd
38

-n;显示行号

[root@Ask-02 演示]# grep -n ‘nologin‘ passwd
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
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
13:nobody:x:99:99:Nobody:/:/sbin/nologin
14:systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
15:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
16:dbus:x:81:81:System message bus:/:/sbin/nologin
17:polkitd:x:998:996:User for polkitd:/:/sbin/nologin

-i;不区分大小写(好比你修改了内容中其中一个nologin的首字母为大写的N,它也会列出来,如果不加i则不列出来)

[root@Ask-02 演示]# grep -ni ‘nologin‘ passwd

-v;取反,把内容中含有nologin的信息去掉只显示剩余的信息

[root@Ask-02 演示]# grep -vni ‘nologin‘ passwd
1:root:x:0:0:root:/root:/bin/bash
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
43:ask:x:1000:1000:Ask:/home/ask:/bin/bash

-r;遍历所有子目录查找含有指定相关信息的文件

[root@Ask-02 演示]# grep -r ‘root‘ /etc/

技术分享图片
-A;后面跟数字,过滤出符合要求的行以及下面的n行

[root@Ask-02 演示]# grep -A2 ‘root‘ passwd

技术分享图片
-B;后面跟数字,过滤出符合要求的行以及以上的n行

[root@Ask-02 演示]# grep -nB2 ‘root‘ passwd

技术分享图片
-C;后面跟数字,过滤出符合要求的行已经上下的各n行

[root@Ask-02 演示]# grep -nC2 ‘root‘ passwd

技术分享图片

grep正则形式用法

[0-9];去方括号内的任意数显示

[root@Ask-02 演示]# grep ‘[0-9]‘ passwd

技术分享图片
-v;显示出了指定内容外的内容
技术分享图片
-v ‘^#‘;表示显示不以井号为开头的一行

[root@Ask-02 演示]# grep -nv ‘^#‘ inittab
12:akjsdlakjsdh

‘^[^0-9]‘;表示过滤掉含有0-9数字开头的行,只显示没有以数字开头的行
技术分享图片
相反查看已数字开头的行

[root@Ask-02 演示]# grep -nv ‘^[^0-9]‘ inittab
3:111122222
21:11111asd2222222

‘r.o‘;点表示任意字符
技术分享图片
*‘oo‘;星号表示星号前字符和后面的o字符的行
技术分享图片
‘o{2}‘;表示列出含有连续两次o的行花括号里的数字是次数的意思
技术分享图片
如果不想要使用脱义符号的可以使用
egrep命令,或者使用-E**参数

[root@Ask-02 演示]# grep -E ‘o{2}‘ passwd
[root@Ask-02 演示]# egrep ‘o{2}‘ passwd

‘o+o‘;表示一个或多个加号前面的字符
技术分享图片
‘o?t‘;表示列出问号前的字符依次的行信息
技术分享图片
‘root|nologin‘;这里的竖线表示或者的意思列出含有竖线两边任意一个字符信息的行
技术分享图片

正则/grep

标签:src   mon   正则介绍   halt   符号   字符   首字母   c89   编程语言   

原文地址:http://blog.51cto.com/13529231/2061355

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!