189 8069 5689

正则表达式-grep命令-创新互联

1. 基本的正则表达式  grep

金坛ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!

^a    表示匹配以a开头的行;

a$ 表示匹配以a结尾的行;

^$ 表示空白行;

. 表示匹配任意一位字符;

* 表示匹配其前面字符的任意次(可以是0次);

.* 表示匹配任意字符任意次;

\?    表示匹配前面字符1次或0次;

a\{3,5\}表示匹配前面字符的至少3次,最多5次;

[a-z]  表示匹配任意一个字母;

[a-Z]  表示匹配任意一个字母(不区分大小写);

[1-9] 表示匹配任意数字;

[^1-9]  表示匹配不是数字;

[a-Z0-9]表示匹配数字和所有字母;

[[:alnum:]] 表示匹配数字和所有字母;

[[:space:]] 表示匹配空格;

[[:punct:]] 表示匹配标点符号

\<或\b 表示匹配<符号后面的单词,必须做为首部出现  比如  \

\>或\b  表示匹配>符号前面的单词,必须做为尾部出现  比如  abc\>

\( \)  表示分组  一般和后向引用合用;

后向引用

  \1  引用前面第一个分组

  \2  引用前面第二个分组

  \3  引用前面第三个分组

[root@server0 ~]# grep "\(a\)\(b\)c\1xc\1\2c" test.txt

abcaxcabc

2. 扩展的正则表达  egrep或grep -E

+ 表示匹配前面字符至少1次;

? 表示匹配前面字符1次或0次;

{} 表示匹配前面字符的多少次;

()    表示分组

|    表示或者

3.grep命令

-i   不区分大小写

-v   取反

    -o   显示字符串本身

    -n   输出时显示行号

    -E   支持扩展正则表达式   等效 egrep

    -A   显示匹配字符的之后N行

    -B   显示匹配字符的之前N行

-C   显示匹配字符的前后N行

    -r   递归匹配全部文件

4.基本正则表达式应用举例

1) 查询/var/log/message文件中包含kernel的信息

[root@server0 ~]# grep kernel /var/log/messages

2) 查询/etc/passwd文件中以root开头的行

[root@server0 ~]# grep "^root" /etc/passwd

root:x:0:0:root:/root:/bin/bash

3) 查询/etc/passwd文件中以nologin结尾的行,并计算行数

[root@server0 ~]# grep "nologin$" /etc/passwd

4) 查询/usr/share/dict/words 文件中以a或b开头的行

[root@server0 ~]# grep "^[a,b]" /usr/share/dict/words

5) 查询/usr/share/dict/words文件中以不以 c,d,e,f(忽略大小写)开头的行,并计算行数

[root@server0 ~]# grep "^[^c-f]" /usr/share/dict/words | wc -l

6) 在/etc/passwd中选出所有不包含nologin 的行。

[root@server0 ~]# grep -v "nologin" /etc/passwd

7) 查询/usr/share/dict/words文件中以a开头且第三个字符是z的行

[root@server0 ~]# grep "^a.z" /usr/share/dict/words

8)查询/usr/share/dict/words文件中以a开头且后面跟随5个字符的行

[root@server0 ~]# grep "^a.\{5\}$" /usr/share/dict/words

9)查询你的系统的CPU有几个核

[root@server0 ~]# grep "processor" /proc/cpuinfo  | wc -l

10) 查询/usr/share/dict/words文件中总共10位,且以z结尾的行。

[root@server0 ~]# grep "^.\{9\}z$" /usr/share/dict/words

11) 查询/usr/share/dict/words文件中以 a,b,c开头,且第5位只能为s的行

[root@server0 ~]# grep "^[a,b,c]...s" /usr/share/dict/words

12) 查询/usr/share/dict/words文件中所有以两位数字开头的行

[root@server0 ~]# grep "^[1-9][1-9]" /usr/share/dict/words

13) 查询/usr/share/dict/words文件中以a,b,c开头的且不以a,b,c结尾行

[root@server0 ~]# grep "^[a,b,c].*[^a,b,c]$" /usr/share/dict/words

14)查询/usr/share/dict/words文件中以小写字母开头,以大写字母结尾的行

[root@server0 ~]# grep "^[a-z].*[A-Z]$" /usr/share/dict/words

5.扩展正则表达式

1)去除a.txt 空白行与#开头的行

[root@server0 ~]# egrep -v "^$|^#" a.txt

2)搜索god good goood等字符串

[root@server0 ~]# egrep "go{1,3}d" a.txt

3)搜索gd 或者 god字符串的行

[root@server0 ~]# egrep "go?d" a.txt

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


名称栏目:正则表达式-grep命令-创新互联
本文URL:http://cdxtjz.cn/article/dohdhj.html

其他资讯