【APP】Linux运维利器--Grep命令及正则表达式

grep, egrep, fgrepgit

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


总结内容:ide

一、grep经常使用参数spa

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

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


语法:grep [options]PATTERN [FILE...]it



grep中经常使用的几个参数:io

-r  递归匹配class

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

-i  忽略大小写差异

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

-w 若是被\<和\>引用,就把表达式作为一个单词搜索(单词匹配)

:netstat -ntlp |grep"\<80\>"

   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的行。



位置锚定:

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

$: 锚定行尾,此字符前面的任意内容必须出如今行尾
\<或\b  锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。
\>或\b  锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。

分组:

\(\)

       \(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

grep -e 'stdio\.h' -e 'stdlib\.h' /usr/include/*.h

1.2 使用-f file

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

1.3 使用元字符 \|

grep 'stdio\.h\|stdlib.h' /usr/include/*.h


关于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查看。。。

[:alpha:]   文字字符   [A-Za-z]

[:digit:]   数字字符   [0-9]

[:graph:]   非空字符(非空格、控制字符)

[:lower:]   小写字符  [a-z]

[:upper:]   大写字符  [A-Z]

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

[:cntrl:]   控制字符 

[:print:]   非空字符(包括空格)

[:punct:]   标点符号

[:space:]   全部空白字符(新行,空格,制表符),制表符还能够用\t表示

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

咱们在用时要这样用:[[:alpha:]],若是取反就是[^[:digit:]]


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


正则表达式:

Basic REGEXP:基本

Extended REGEXP:扩展


PS: 这里再也不作详细说明!!!!!!!!!


基本正则表达式:

.:

[]:

[^]:


次数匹配:

*:

\?: 0或1次

\{m,n\}:至少m次,至多n次;


.*:


锚定:

^:

$:

\<, \b:

\>, \b:


反向引用

\(\)

\1, \2, \3, ...



grep:使用基本正则表达式定义的模式来过滤文本的命令;

-i

-v

-o

--color

-E: 使用扩展正则表达式

-A #:

-B #:

-C #:

扩展正则表达式:


字符匹配:

.

[]

[^]


次数匹配:

*:

?:

+: 匹配其前面的字符至少1次

{m,n}


位置锚定:

^

$

\<

\>


分组:

():分组

\1, \2, \3, ...


或者

|: or

C|cat: Cat或cat, C或cat

相关文章
相关标签/搜索