正则表达式的用法及其扩展
正则表达式(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&;:必须是单词 其他的关于正则表达式的还有很多命令就不一一展示了 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |