正则/grep

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则/grep相关的知识,希望对你有一定的参考价值。

正则介绍

什么是正则

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

grep

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

[[email protected] 演示]# grep ‘nologin‘ passwd

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

[[email protected] 演示]# grep -c ‘nologin‘ passwd
38

-n;显示行号

[[email protected] 演示]# 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则不列出来)

[[email protected] 演示]# grep -ni ‘nologin‘ passwd

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

[[email protected] 演示]# 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;遍历所有子目录查找含有指定相关信息的文件

[[email protected] 演示]# grep -r ‘root‘ /etc/

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

[[email protected] 演示]# grep -A2 ‘root‘ passwd

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

[[email protected] 演示]# grep -nB2 ‘root‘ passwd

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

[[email protected] 演示]# grep -nC2 ‘root‘ passwd

技术分享图片

grep正则形式用法

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

[[email protected] 演示]# grep ‘[0-9]‘ passwd

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

[[email protected] 演示]# grep -nv ‘^#‘ inittab
12:akjsdlakjsdh

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

[[email protected] 演示]# grep -nv ‘^[^0-9]‘ inittab
3:111122222
21:11111asd2222222

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

[[email protected] 演示]# grep -E ‘o{2}‘ passwd
[[email protected] 演示]# egrep ‘o{2}‘ passwd

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

以上是关于正则/grep的主要内容,如果未能解决你的问题,请参考以下文章

shell编程初步grep及正则表达式

正则表达式,grep/egrep工具的使用

正则表达式和grep用法,及文本查看处理工具

二十正则介绍grep上grep中grep下

Linux正则表达式及grep命令

grep正则表达式