Linux运维利器–Grep命令及正则表达式

grep, egrep, fgrep

grep: 根据模式搜索文本,并将符合模式的文本行显示出来。

总结内容:

1、grep常用参数

2、grep正则表达式元字符集(基本用法)及高级用法

3、与正则相关的POSIX特殊字符类

语法:grep [options]PATTERN [FILE…]

grep中常用的几个参数:

-r 递归匹配

-E 高级扩展功能与egrep功能相似

-i 忽略大小写差别

-v 反向匹配,只显示不匹配的行

-w 如果被\&;和\&;引用,就把表达式做为一个单词搜索(单词匹配)

grep -w’main’ /usr/include/*.h

-n 显示匹配行及行号

-l 用于多文件查找,查询多文件时只输出包含匹配字符的文件名

grep -l -r -i -w ‘filename_max’ /usr/include/*.h

–color 高亮显示匹配

-c 只打印匹配的行数,不显示匹配的内容

-o:只显示被模式匹配到的字符串

grep正则表达式元字符集(基本用法)

匹配次数(贪婪模式):. 匹配一个非换行符的字符 如:’gr.p’匹配gr后接一个任意字符,然后是p。* 匹配零个或多个先前字符 如:’*grep’匹配所有一个或多个空格后紧跟grep的行。

.* 一起用来表示任意字符。\? 匹配其前面的字符1次或0次。

x\{m\} 连续重复字符x,m次,如:’o\{5\}’匹配包含连续5个o的行。x\{m,\} 连续重复字符x,至少m次,如:’o\{5,\}’匹配至少连续有5个o的行。x\{m,n\} 连续重复字符x,至少m次,不多于n次,如:’o\{5,10\}’匹配连续5–10个o的行。

元字符:[] 匹配一个指定范围内的字符,如'[Gg]rep’匹配Grep和grep。[^] 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep’匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。

位置锚定:

^: 锚定行首,此字符后面的任意内容必须出现在行首

\(\)

\(ab\)*

后向引用

\1: 引用第一个左括号以及与之对应的右括号所包括的所有内容

\2:

\3:

\w 匹配一个文字和数字字符,也就是[A-Za-z0-9],如:’G\w*p’匹配以G后跟零个或多个文字或数字字符,然后是p。\W w的反置形式,,匹配一个非单词字符,如点号句号等。\W*则可匹配多个。\b 单词锁定符,如: ‘\bgrep\b’只匹配grep,即只能是grep这个单词,两边均为空格。

多个关键字查找

1.1 使用-e

1.2 使用-f file

将关键字以行方式保存在一个文件中

关于egrep和grep -E的高级用法:

+ 匹配一个或多个先前的字符。如:'[a-z]+able’,匹配一个或多个小写字母后跟able的串,如loveable,enable,disable等。  

? 匹配零个或多个先前的字符。如:’gr?p’匹配gr后跟一个或没有字符,然后是p的行。  a|b|c 匹配a或b或c。如:grep|sed匹配grep或sed   

() 分组符号,如:love(able|rs)ov+匹配loveable或lovers,匹配一个或多个ov。  x,x{m,},x{m,n}   作用同x\{m\},x\{m,\},x\{m,n\}

POSIX特殊字符类:可以通过 man 7 glob查看。。。

[:alnum:] [0-9a-zA-Z]

[:cntrl:]   控制字符 

[:punct:]   标点符号

[:space:]   所有空白字符(新行,空格,制表符),制表符还可以用\t表示

[:xdigit:]   十六进制数字和字母(0-9,a-f,A-F)

我们在用时要这样用:[[:alpha:]],如果取反就是[^[:digit:]]

人生就像爬坡,要一步一步来。

Linux运维利器–Grep命令及正则表达式

相关文章:

你感兴趣的文章:

标签云: