正则表达式||grep的使用

简介:

    在编写程序时,或者编写网页时,在处理一些不固定的字符时,我们通常会使用形如:. * ?等字符,而我们就把这称作是正则表达式,尤其是我们在浏览一些网站进行用户注册时,通常会见到对我们的帐号、密码、邮箱等格式或复杂程度进行限制,而这一切都是正则表达式的功劳,而正则表达式在不同的环境中也是具有不同的作用的。
    在正则表达式中我们一般是将这些组成正则表达式的字符称作“元字符”。

    在Linux下,正则表达式:
    ^PATTERN 行首锚定符,以PATTERN为行首开始
    PATTERN$ 行尾锚定符,以PATTERN为行尾结束
    \<PATTERN 词首锚定符,以PATTERN为词首开始的单词
    PATTERN\> 词尾锚定符,以PATTERN为词尾结束的单词
    . 匹配任意单个非空字符
    * 匹配此前的字符0到任意次
    .* 匹配此前长度的任意字符(当正则表达式中包含能接受重复的限定符时,通
常的行为是【在使整个表达式能得到匹配的前提下】匹配尽可能多的字符,我们将其称之为:贪婪模式)
    ? 匹配此前的字符0次或1次
    \{m,n\} 匹配之前字符至少m次至少n次(注:匹配至少2次多则不限\{2,\} 匹配最多5次少则不限\{0,5\} 匹配5次\{5\})
    [] 匹配指定范围内的任意单个字符
    [^] 匹配指定范围外的任意单个字符
    \(\) 标识引用和分组,做引用时,在后面要使用括号中的字符时只需输入\n,
n标识次表达式中的从左至右的第几个括号;做分组作用时,是指括号中的为一组,执行共同的动作


    而在Linux中我们通常使用的文本查找工具grep、egrep、fgrep都是配合正则表达式来使用的:
    grep:基本正则表达式;
    egrep:扩展正则表达式;
    fgrep:快速搜索全部的字符。
    grep [option] file
         --color=auto|always 指定匹配到的字符所显示的颜色
         -E    支持扩展正则表达式即:grep -E = egrep
         -v 取反
         -i 忽略大小写
         -r 搜索多个文件,即:递归搜索
         -B NUMBER 显示搜索到的行的上NUMBER行
         -A NUMBER 显示搜索到的行的下NUMBER行
         -C NUMBER 显示搜索到的行的上下NUMBER行
         -o 只显示匹配到的内容本身,并非所在的行
    egrep 扩展正则表达式:扩展正则表达式对标准正则表达式的某些元字符进行了简化如:
    \{m,n\} ---->  {m,n}
    \(\) ----> ()
    添加了:
    | 表示或的意思
    + 匹配之前字符1次或任意次


例子:
1、搜索以redhat为行开始的行在/etc/passwd中    #grep --color=auto "^redhat" 
/etc/passwd


2、搜索以 :为行结尾的行在/etc/passwd中        #grep --color=auto ":$" 
/etc/passwd


3、搜索不是以字母r开头的单词在/etc/passwd中    #grep --color=auto -v -o 
"\<r" /etc/passwd


4、搜索以字母d结尾的单词在/etc/passwd中        #grep --color=auto "d\>" 
/etc/passwd


5、搜索形如XXX.XXX.XXX.XXX的行,X只为数字在/tmp/test/a.txt中    #grep --
color=auto "\([[:digit:]]\{3\}\.\)\{3\}[[:digit:]]\{3\}" /tmp/test/a.txt


6、搜索以其为附加组多于两个用户的组        #grep --color=auto "\(,.*\)\{2\}$" /etc/group


7、搜索密码永不过期的用户            #grep --color=auto "\(.*\)\{4\}99999" /etc/shadow



相信你看过后,对正则表达式和grep已经能够熟练使用了!








本文转自 向阳草米奇 51CTO博客,原文链接:http://blog.51cto.com/grass51/774305,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
运维 Unix Linux
grep正则表达式搜索
grep正则表达式搜索
16 3
|
6月前
|
Linux Perl
[笔记]linux grep之正则表达式
[笔记]linux grep之正则表达式
|
7月前
|
Unix Linux
如何在 Linux 中使用 Grep 和正则表达式进行文本搜索?
如何在 Linux 中使用 Grep 和正则表达式进行文本搜索?
191 5
|
10月前
|
机器学习/深度学习 NoSQL Linux
Linux行处理工具: grep 正则表达式
Linux行处理工具: grep 正则表达式
82 0
|
10月前
|
机器学习/深度学习 C语言 数据安全/隐私保护
『正则表达式』概念 及在grep、awk、sed、C语言、Python中的简单应用
正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式。它可以用来检查一个字符串是否符合某个规则,或者从一个字符串中提取出符合某个规则的子串。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。
|
12月前
|
机器学习/深度学习 移动开发 Go
正则表达式使用说明(包含find命令与grep命令)
正则表达式使用说明(包含find命令与grep命令)
108 0
|
自然语言处理 Shell Perl
Shell正则表达式(grep)
Shell正则表达式(grep)
52 0
|
机器学习/深度学习 Linux Perl
Linux三剑客grep、sed、awk以及正则表达式
$ 以...结尾 ^ 以...开头 . 匹配任意一个字符 \- 匹配前一个字符或子表达式任意次(例如:grep "g.*d" a.txt(过滤a.txt文件中的以g开头以d结尾*可以代表有任意多个字符或没有字符))
118 0
Linux三剑客grep、sed、awk以及正则表达式
|
机器学习/深度学习 Shell Linux