您的位置:首页 > 运维架构 > Linux

Linux系统学习之正则表达式笔记

2014-03-02 02:43 435 查看
一、正则表达式

在计算机科学中,正则表达式是用来描述或匹配一系列符合某个句法规则的字符串;在文本编辑器或某些工具(例如bash环境)中,正则表达式通常被用检索那些符合某个模式的文本内容。在linux中,正则表达式是由一类字符所书写的模式。通过实现定义好的模式来实现对bash环境中所需要字符串的过滤。
正则表达式是由一系列的普通字符和一些元字符组成。普通字符主要包括了大小写字母和数字。元字符则具有特殊的含义。它不表示字符本身的意义而用于额外的一些功能性的描述。正则表达式有基本正则表达式和扩展正则表达式之分,下面我将列出在linux中常用的一些常用的元字符,并用相关的实例来进行讲解:
1.基本正则表达式
***
2.扩展正则表达式
以下主要列出不同于基本正则表达式的部分元字符

3.在linux中还有其它的一些转义字符,但这里仅对常用的进行了一些列举和解释。有兴趣的朋友可以通过“man 7 regex”查看man文档中提供的帮助系统。
二、grep命令的使用
下面我来向大家介绍如何通过grep命令来使用正则表达式进行相应的模式匹配。首先我来介绍一下grep命令的基本使用。
grep (Global Search Regular Expression and Printing),表示全面搜索正则表达式并进行打印,是一种强大的文本搜索工具,它能够使用正则表达式搜索文本,并把匹配的行打印出来。grep有三种,包括grep、egrep和fgrep。
分别表示如下:

三、以下我将在rhel6.4上使用具体的实例来显示grep命令如何使用正则表达式来进行模式匹配。
使用前在当前bash中对grep设置一个别名,命令如下:
aliasgrep='grep --color=auto'
1.显示/etc/passwd文件中以不区分大小写的s开头的行。
grep"^[sS]"/etc/passwd
egrep"^(s|S)"/etc/passwd
2.显示默认shell为bash,且其用户ID号最小的用户的用户名。
grep"/bin/bash$"/etc/passwd| sort-n -t: -k3 | cut-d: -f1
3.显示/etc/rc.d/rc.sysinit中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行。
grep"^#[[:space:]]{1,}[^[:space:]]"/etc/rc.d/rc.sysinit
egrep"^#[[:space:]]+[^[:space:]]"/etc/rc.d/rc.sysinit
4.显示/etc/rc.d/rc.sysinit中符合任意单个字符后面跟了个n,n后面有任意长度的任意字符,而后是任意单个字符后面跟了个n,但后面的n之前的字符要与前面的n之前的字符相同。
grep"(.n)".*1" /etc/rc.d/rc.sysinit
5.显示test.txt文件中的,1位数,或2位数。
grep-w "[0-9]{1,2}"test.txt
grep"<[0-9]{1,2}>"test.txt
6.显示ifconfig命令结果中的1-255之间的整数。
ifconfig| egrep"<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])>"
7.匹配ifconfig命令中的IP地址,要求匹配范围为1.0.0.1~~223.255.255.254
ifconfig| egrep-o --color "<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-1][0-9]|22[0-3]).([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])>"

本文出自 “凄凄秋如夜 残雪舞指间” 博客,请务必保留此出处http://0101x.blog.51cto.com/8639108/1365763
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: