感谢支持
我们一直在努力

Linux正则表达式的使用和基本命令grep、egrep、fgrep的用法

一、正则表达式

一个系统的使用,不仅仅只是软件的安装调试和维护,同时也是对与现有环境的优化和改革,我们在linux的使用过程中总是会遇到很多对于参数的描述,有时我们需要的是参数本身所给出的答案,有时我们仅仅需要的只是参数的最终状态结果。

是一些特殊或不很特殊的字符串模式的集合。通过一些元字符,来表示一些通配的意义,这可以简单的称之为正则表达式。

正则表达式:REGular EXPression, 简写为:REGEXP

元字符:

.:匹配任意单个字符

匹配字符次数(工作在贪婪模式下,尽可能的去匹配):

*:匹配其前面的字符任意次

a, b, ab, aab, acb, adb, amnb

a*b

.*:匹配任意长度的任意字符

[]:匹配指定范围内的任意单个字符

[^]:匹配指定范围外的任意单个字符

[:digit:], [:lower:], [:upper:], [:punct:], [:space:], [:alpha:], [:alnum:]

\?:匹配其前面的字符1次或0次

\{m,n\}:匹配其前面的字符至少m次,至多n次

\{1,\} 至少一次

\{0,3\} 至多三次

位置锚定:

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

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

^$: 空白行

\<或\b:锚定词首,其后面的任意字符必须作为单词首部出现

\>或\b: 锚定词尾,其前面的任意字符必须作为单词尾部出现

\<root\>: 精确匹配root

分组:

\(\)

\(ab\)*    ab可以出现0次1次任意次

后向引用

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

\2: 第二个左括号以及与之对应的右括号所包括的所有内容

\3: 第三个左括号以及与之对应的右括号所包括的所有内容

扩展的正则表达式:

字符匹配:

.:匹配任意单个字符

[]:匹配指定范围内的任意单个字符

[^]:匹配指定范围外的任意单个字符

次数匹配:

*:

?:匹配其前面的字符0次或一次

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

{m,n}:匹配至少m次至多n次

位置锚定:

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

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

^$: 空白行

\<或\b:锚定词首,其后面的任意字符必须作为单词首部出现

\>或\b: 锚定词尾,其前面的任意字符必须作为单词尾部出现

\<root\>: 精确匹配root

分组:

(): 分组

\1, \2, \3, …

或者

|:or  (a|abc a或者abc)

二、grep、egrep、fgrep

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

Pattern: 文本字符和正则表达式的元字符组合而成匹配条件

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

-i 忽略大小写

–color 将匹配的字符加颜色显示

-v 只显示没有被匹配到的行

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

-E 支持扩展正则表达式

-A n : 被匹配到之后同时还显示后面的n行

-B n :被匹配到之后同时还显示前面的n行

-C n :被匹配到之后同时还显示前面后面的n行

grep -E=egrep

fgreo:快速搜索,不支持正则表达式

例如:(#为[root@localhost`]#)

1、搜索特定的字符 # grep ‘root’ /var/log/secure

将/var/log/secure这个文件中有root的那一行显示出来

2、反向选择 #grep –v ‘root’ /etc/passwd

3、锚定行首 #grep ‘^root’ /etc.passwd

显示出以root开头的行

4、  限定连续重复字段范围 #grep  ‘‘o\(2\)’’ /etc/passwd

找到两个o的字符串

5、  显示/etc/inittan中以#开头,并且后面跟一个或多个空白字符,而后又跟了非空白字符的行 grep ‘^#[[:space:]]\{1,\}[^[:space:]]’ /etc/inittab

6、  匹配默认shell为/sbin/nologin用户列表

grep ‘nologin$’ /etc/passwd | cut –d: -f1

赞(0) 打赏
转载请注明出处:服务器评测 » Linux正则表达式的使用和基本命令grep、egrep、fgrep的用法
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏