正则表达式(REGular EXPression REGEXP)是对字符串操作的一种逻辑公式,就是用事先定义好的一些特殊字符、及这些特定字符的组合,组成的一个“规则字符串”,这个“规范字符串”用来表达对字符串的一种过滤逻辑。通过正则表达式,我们可以从字符串中获取我们想要的特定部分。
正则表达式的主要特点:
1、 灵活性、逻辑性和功能性非常的强;
2、 可以迅速地用极简单的方式达到字符串的复杂控制。
3、 对于刚接触的人来说,比较晦涩难懂;可一但掌握并熟练应用后,可以发现它的强大之处
由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,大小编辑器都可以使用它来处理文本内容。在下文主要讲的是它在linux中的应用技巧。
基本正则表达式:Basic
模式:grep[options]PATTERN[FILE…]
-i:不区分字母大小写
--color:把符合条件的用颜色显示出来
-v:显示没有被模式匹配到的字符串
-o:只显示被模式匹配到的字符串
-n:输出行号
-E:使用扩展正则表达式
-A#:这一行后的#行都显示出来
-B#:这一行前#行都显示出来
-C#:前后#行都显示出来
\{n,m\}:连续n到m个的“前一个字符”
元字符:
.:匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]匹配指定范围外的任意单个字符
字符集合:[:space:]空白字符、[:digit:]数字、[:lower:]小写字母、[:alnum:]数字和大写字母、等。可以使用 #man 7 glob来查看具体的各个命令(参看上文)
例如:(#为[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 (此条命令用到了管道、cut命令、等)
扩展正则表达式:Extended 大部分用法及命令都与正则表达式相同
Grep –E=egrp
特殊字符的使用:
+ :匹配其前面的字符至少一次
?:“0个或1个”字符
| :用或的方式找出这个符合的字符串
Eg: C|cat: C或cat
(Cc)at: Cat 或cat
():找出“用户组”字符串
次数匹配:
*:匹配其前面的字符任意次
.*:任意长度的任意字符
\? :匹配前面的字符0次或1次
位置锚定字符:
^:锚定行首,此字符后面的任意内容必须出现在行首
$:锚定行尾,此字符前面的任意次内容必须出现在行尾
^$:空白行
\<或\b:锚定行首,其前面的任意字符必须作为单词首部出现
\> 或\b:锚定行尾,其后面的任意字符必须作为单词尾部出现
\<root\>:必须是单词
其他的关于正则表达式的还有很多命令就不一一展示了
原文链接:https://www.f2er.com/regex/363135.html