grep和egrep
grep(全称:Globally search aRegular Expression and Print)是Linux中的一种文本搜索工具,用于显示用户指定的文本模式在目标文本中匹配的行。egrep是当其使用扩展正则表达式来匹配字符时的另一种表示模式,相当于grep –E。下面,分别讲grep的基本使用方法以及相关的基础正则表达式与扩展正则表达式。
一、grep的基本用法
格式:grep [option]… ‘PATTEN’ [file](做变量换算时需要使用双引号)
默认只支持基本正则表达式,要匹配基本正则表达式之外的文本模式,需使用grep -E
常用选项:
--color 指定颜色
-v 反向选择
-o 仅匹配被模式匹配到的字符串
-i 不区分大小写
-E 匹配扩展正则表达式文本模式
-A #:还显示模式匹配到的下面#行(#表示数字)
-B #:还显示模式匹配到的上面#行
-C #:还显示模式匹配到的前后#行
二、附录:
一)基础正则表达式
基础正则表达式之元字符:
.:任意字符
[ ]:指定范围内的任意单个字符
所有数字:[0-9],[[:digit:]]
所有小写字母:[a-z],[[:lower:]]
所有大写字母:[A-Z],[[:upper:]]
所有的字母:[[:alpha]]
所有的字母+数字:[[:alnum:]]
空格:[[:space:]]
标点符号:[[:putct:]]
指定范围外:[^]
基础正则表达式之次数匹配:
*:任意次
.*:匹配任意字符任意次
\?:匹配前面的字符0次或者1次
\{m\}:匹配m次
\{m,n\}:匹配至少m次,至多n次
\{m,\}:匹配至少m次
\{0,n\}:匹配至多n次
基础正则表达式之位置锚定:指定字符出现的位置
^Char:锚定行首
Char$:锚定行尾
^$:锚定空白行
基础正则表达式之单词的位置锚定
\<char,\b:锚定词首
Char>\,b\:锚定词尾
基础正则表达式之分组和引用:
\(char\).*\1:后向引用,引用前面的第一个左括号以及与之对应的右括号中的模式匹配到的内容。意思是,前面出现一次,在\1这也要出现一次。当数字1变成2时表示第二个左括号以及与之对应的右括号中的模式匹配到内容。
示例如下:
二)扩展正则表达式:
扩展正则表达式之字符匹配:
.:任意单个字符
[ ]:指定范围内的任意单个字符
[^]:指定范围外的任意单个字符
扩展正则表达式之次数匹配:
*:匹配前面的字符任意次
?:匹配前面的字符0或者1次
+:匹配前面的字符至少1次
{m}:匹配前面的字符m次
{m,n}:匹配前面的字符至多n次,至少m次
{0,n}:匹配前面的字符至多n次
扩展正则表达式之分组:
(char)\1:分组和后向引用
|:或者
示例一:
示例二: