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

一、正则表达式

      在计算机科学中,正则表达式是用来描述或匹配一系列符合某个句法规则的字符串;在文本编辑器或某些工具(例如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])>"


你可能感兴趣的:(linux,正则表达式)