grep及正则表达式
Posted it芮菜鸟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了grep及正则表达式相关的知识,希望对你有一定的参考价值。
文本查找的需要:grep,egrep,fgrep
grep(Global Research):根据模式,搜索文本,并将符合模式的文本行显示出来。
Pattern:文本字符和正则表达式的元字符组合而成的匹配条件
grep [OPTIONS] PATTERN [FILE...]
-i:忽略字符大小写
--color:把匹配到的字符用高亮颜色显示出来,因为加上--color用起来会方便很多,所以用alias给grep取个别名alias grep=\'grep --color\'
-v:显示没有被模式匹配到的行
-o:只显示被模式匹配到的字符串
正则表达式:regular expression,REGEXP
正则表通常被用来检索、替换那些符合某个模式(规则)的文本。
元字符:
.:匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
字符集合:[:digit:],[:lower:],[:upper:],[:punct:],[:space:],[:alpha:],[:alnum:]
匹配次数(贪婪模式,即尽可能长的去匹配):
*:匹配其前面的字符任意次
eg这些个字符串里a,b,ab,aab,acb,adb,amnb哪个能满足a*b
b:b前面的a出现0次
aab:b前面的a出现2次
.*:任意长度的任意字符
eg:a.*b:以a开头b结尾的字符串
\\(此处\\是用来转义的)?:匹配其前面的字符1次或0次
\\{m,n\\}:匹配其前面的字符至少m次,至多n次
eg\\{1,\\}:匹配其前面的字符至少一次
位置锁定:
^:锚定行首,此字符后面的任意内容必须出现在行首
$:锚定行尾,此字符后面的任意内容必须出现在行尾
^$:空白行
\\<或\\b:锚定词首,其后面的任意字符必须作为单词首部出现
\\>或\\b:锚定词尾,其前面的任意字符必须作为单词尾部出现
!!!注意:两个\\b的作用不同表现形式为一个放在锚定词前一个放在锚定词尾
分组:
\\(\\)
\\(ab\\)*
后向引用
\\1:引用第一个左括号以及与之对应的右括号所包括的所有内容
\\2:引用第一个左括号以及与之对应的右括号所包括的所有内容
\\3:引用第一个左括号以及与之对应的右括号所包括的所有内容
fgrep:不支持正则表达式,执行速度快
例子:
grep(Global Research):根据模式,搜索文本,并将符合模式的文本行显示出来
1、
查找/etc/passwd中有root的行并显示出来
2、grep --color:把匹配到的字符用高亮颜色显示出来
因为加上--color用起来会方便很多,所以通常用alias给grep取个别名alias grep=\'grep --color\'
正则表达式:regular expression,REGEXP
位置锁定:
(1)^:锚定行首,此字符后面的任意内容必须出现在行首
(2)$:锚定行尾,此字符后面的任意内容必须出现在行尾
显示以数字结尾的行
(3)\\>或\\b:锚定词尾,其前面的任意字符必须作为单词尾部出现
以上是关于grep及正则表达式的主要内容,如果未能解决你的问题,请参考以下文章