正则表达式:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索或替换那些符合某个模式的文本内容。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。
只有掌握了正则表达式,才能全面地掌握 Linux 下的常用文本工具(例如:grep、egrep、GUN sed、 Awk 等) 的用法
grep、sed、awk天然支持正则
grep -v代表反选,反向选择匹配到的内容
grep -E代表使用扩展正则
grep -P代表使用Perl正则
sed -r 代表使用扩展正则
正则表达式分为三类(man grep可以看到,分别是basic RegExs,extended RegExs,perl RegExs)
1、基本的正则表达式(Basic Regular Expression 又叫 Basic RegEx 简称 BREs)
2、扩展的正则表达式(Extended Regular Expression 又叫 Extended RegEx 简称 EREs)
3、Perl 的正则表达式(Perl Regular Expression 又叫 Perl RegEx 简称 PREs)
b. 处理过程:查找文本文件中是否包含要查找的 “关键字”(关键字可以是正则表达式) ,默认返回匹配的该行的内容
c. grep|egrep处理文件时,按行处理 |
| sed | sed | sed -r | - | a. 处理对象:文本文件
b.处理 *** 作:对文本文件的内容进行 查找、替换、删除、增加等 *** 作
c. sed 在处理文本文件的时候,按行处理 |
| awk | - | awk | - | a. awk 处理的对象:文本文件
b. awk 处理 *** 作:主要是对列进行 *** 作 |
注意:egrep 或 sed -r 默认使用扩展正则表达式(EREs),一般特殊字符({})可以不转义
grep -E 以及egrep(Extend Regular Expression)
Linux通配符和三剑客的正则表达式是不一样的,因此,代表的意义也有较大的区别 。
通配符一般用户命令行bash环境,而linux正则表达式用于grep, sed, awk场景。
通配符说明
示例:* 的使用:代表任意0-N个字符,代表所有字符
[]本身就是特殊符号, 这里用的就是特殊意义[0-9]表示 0,1,....9 这些字符中的一个
不需要转义
如果要匹配方括号,才需要\[ \]
正则表达式 \w \s \d \b 用法:. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意的空白符
\d 匹配数字 等价于[0-9]
\D 匹配非数字字符
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
其中,[ A-Z]表示除了不包含大写字母, 取反^[A-Z]表示以大写字母开头
————————————————
原文链接: https://blog.csdn.net/e327473468/article/details/77942878/
linux +和\? 20
按正则的说法
+表示重复前面的1次或者N次
?表示重复0次或者1次
\一般是转义
那么在我看来+和?应该就相当于是转义了,直接就是2个符号没有别的意义了
遇到一个要求是 “取出/etc/rc.d/init.d/functions/中的functions(functions)”
看了下答案的前半部分
[root@F~]# echo /etc/rc.d/functions/ | grep -o '[^/]+/?$'
functions/
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)