grep及正则表达式

grep简介

grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。通常grep有三种版本grep、egrep(等同于grep -E)和fgrep。egrep为扩展的grep,fgrep则为快速grep(固定的字符串来对文本进行搜索,不支持正则表达式的引用但是查询极为快速)。grep是Linux文本处理三剑客之一。

grep使用方式

grep [options] PATTERN [FILE...]

-i : 忽略字符的大小写

--color:高亮显示关键字

-v: 显示没有被模式匹配到的行

-o:只显示被模式匹配到的字符串

Pattern: 文本字符和正则表达式的元字符组合而成匹配条件

正则表达式:REGular EXPression, REGEXP

元字符:

.: 匹配任意单个字符

[]: 匹配指定范围内的任意单个字符

[^]:匹配指定范围外的任意单个字符

             字符集合:[:digit:], [:lower:], [:upper:], [:punct:], [:space:], [:alpha:], [:alnum:]

匹配次数(贪婪模式):

*: 匹配其前面的字符任意次        

.*: 任意长度的任意字符

\?: 匹配其前面的字符1次或0次

\{m,n\}:匹配其前面的字符至少m次,至多n次

                 \{1,\}

                 \{0,3\}

位置锚定:

^: 锚定行首,此字符后面的任意内容必须出现在行首

$: 锚定行尾,此字符前面的任意内容必须出现在行尾

^$: 空白行

\<或\b: 锚定词首,其后面的任意字符必须作为单词首部出现

\>或\b: 锚定词尾,其前面的任意字符必须作为单词的尾部出现

分组:

abab*

后向引用

\1: 引用第一个左括号以及与之对应的右括号所包括的所有内容

\2:

\3:

Tips

[root@mysql ~]# alias grep='grep --color'

设置别名  grep默认关键字高亮显示

 查询以空白字符数字结尾的行

[root@mysql ~]# grep '[[:space:]][[:digit:]]$' /etc/inittab

He love his lover.    She like her liker.  查询这样的内容

[root@mysql ~]# grep 'l..el..e.*\1' test3.test

在/proc/meminfo查询以s或者S开头的内容

[root@mysql ~]# grep '^[sS]' /proc/meminfo 

取出默认shell为bash,且其用户ID号最小的用户的用户名

 grep 'bash$' /etc/passwd | sort -n -t: -k3 | head -1 | cut -d: -f1

显示/etc/inittab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行

grep '^#[[:space:]]\{1,\}[^[:space:]]*' /etc/inittab

显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行;

grep ':[[:digit:]]:' /etc/inittab

grep ':[0-9]:' /etc/inittab

显示/etc/inittab文件中以一个数字开头并以一个与开头数字相同的数字结尾的行

grep '^[0−9][0−9].*\1$' /etc/inittab

查找当前系统上名字为student(必须出现在行首)的用户的帐号的相关信息, 文件为/etc/passwd

 grep '^student\>' /etc/passwd | cut -d: -f3

你可能感兴趣的:(grep及正则表达式)