Shell 正则表达式 基础
一、linux文本查找命令三个基本常用的命令
1、grep:最早的文本匹配程序,使用POSIX定义的基本正则表达式(BRE)来匹配文本
2、egrep:扩展式grep,其使用扩展式正则表达式(ERE)来匹配文本
3、fgrep:快速grep,这个版本匹配固定字符串而非正则表达式。
二、grep的基本语法
GREP pattern-spec
用途:匹配一个或多个模式的文本行
options:
-E:使用扩展正则表达式进行匹配
-i:忽略大小写
--color 加以颜色可以添加别名
laias gerp ='grep --color'
-v:反向显示,没有被模式匹配到的行
-o:只显示被模式匹配到的字符串
-A(后面加数字):找到行显示行后面的n行
grep -A 2 '^core> -B(后面加数字):找到行显示前面的n行
grep -B 2 '^core> -C(后面加数字):找到行的前后n行
grep -C 2 '^core> 三、简单介绍
组成部分:一般字符:没有特殊意义的字符
特殊字符:也称meta字符,元字符,在正则表达式中有特殊的意义
常见的元字符:
\ :通常用于打开或者关闭后续字符的特殊含义,如\(…\)与\{…\}
. :匹配任意单个字符(除NUL)
*: 匹配前面的字符任意次
.* :任意长度的任意字符例如:a.*b:以字母a开头
[] :匹配指定范围内任意单个字符
[^] :匹配指定范围外的任意字符
\? :匹配前面的字符0次或者1次
\{…\} :匹配前面的字符1次或者0次
例如: \{0,1\}匹配一次
grep 'a\{2,3\}' aa.txt
grep 'a.\{2,3\}' aa.txt
egrep:
+ : 匹配前面的正则表达式1个或者多个扩张
| :匹配|前或者后的正则表达式
( ):匹配方刮号起来的正则表达式群 ([])
位置锚定:
^ :锚定行首,此字符后面的任意内容必须出现在行首
$:锚定行尾,此字符前面的任意字符必须出现在行尾
^$:空白行
\:其前面的任意字符必须作为单词的尾部出现
\
实例: grep '\' aa.ttx grep '\' aa.ttx
分组:\(\)
\(ab\)* 匹配ab
向后引用
\1:引用第一个左刮号以及与之对应的右刮号内的所有内容
\2:引用第二个左刮号以及与之对应的右刮号内的所有内容
\3:引用第三个左刮号以及与之对应的右刮号内的所有内容
\4:引用第四个左刮号以及与之对应的右刮号内的所有内容
实例:grep '\().*\1$' aa.txt
四、grep\egrep\fgrep 之间的关系
grep:在没有参数的情况下,只输出符合RE字符串之句子,常见的参数在“一”中
egrep:为grep的扩充版,改良了许多传统的grep不能或者不便的操作;such as:
--- grep 之下不支持?与+这两种字符,但是egerp可以得
--- grep不支持a|b 或则 (abc | xyz) 这类“或一”比对,但是egerp可以
--- grep 在处理{n,m}时,需要{与}处理,但egrep不需要
五、字符集
[:alnum:]数字字符 [:digit:]数字字符[:punct:]标点符合字符 [:alpha:] 字母字符
[:graph:] 非空字符 [:space:] 空格字符[:blank:] 空格与定位字符[:lower:]小写字母
[:upper:] 大写字符 [:cntrl:]控制字符 [:print:]可显示的字符 [:xdigit:] 16进制数字
六、实例
1、 grep 'h.\{0,4\}p$' a:匹配a文件中任意字符至少0次之多4次
2、 grep 'h.\{1\}p$' a :匹配a文件中任意字符1次
3、 grep 'h.\{1,\}p$' a:匹配a文件中任意字符至少1次
4、grep -o -E'{1,3}\.{1,3}\.{1,3}\.{1,3}' grub.cfg搜索IP地址
5、 grep--color -E'C|cat' a.txt
6、 ls|grep '[[^[:space:]]*' 显示以数字结尾但是不包含空白的文件。
7、关于grep和egrep
如下通过常用实例来学习BRE和ERE匹配,源文件url.txt内容如下:
www.baidu.com
http://www.baidu.com
https://www.baidu.com
http://wwwbaiducom
baidu.com
baidu
匹配以http或者https开头,并且其后为:并且含有.的串
BRE匹配:
grep '^https\{0,1\}.*\..*' url.txt
ERE匹配:
grep -E '^https?.*\..*' url.txt
匹配结果如下:
http://www.baidu.com
https://www.baidu.com
页:
[1]