《鸟哥的Linux私房菜》学习笔记(7)——grep及正则表达式

一、grep命令                                                         

grep:根据模式搜索文本,并将符合模式的文本行显示出来

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

命令格式:grep [options] [file...]

[root@hao log]# grep 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

命令选项:

  -i(ignore case):忽略字符大小写

  --color[=when]:高亮显示匹配字符,常用因此使用命令别名以便方便使用

root@hao ~]# grep --color 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@hao ~]# alias 'grep=grep --color'
[root@hao ~]# grep 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

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

  -A n:表示匹配行后n行也显示

  -B n:表示匹配行前n行也显示

  -C n:表示匹配行前后n行都显示

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

[root@hao ~]# grep -o 'root' /etc/passwd
root
root
root
root

二、基本正则表达式元字符                                                 

首先创建测试文件

[root@hao ~]# cat /tmp/test.txt 
a
b
ab
aab
acb
adb
amnb
amnbmnbmnb

元字符:

    : 匹配任意单个字符

  

 

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

 

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

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

  \{m,n\}:匹配其前面的字符至少m次,至多n次。下面为a出现至少一次,之多三次之后是b

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

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

  ^$:空白行

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

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

 

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

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

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

  以数字结尾的行:

  \(\):分组。如下代码匹配ab组合出现任意次。

  分组主要目的是为了后向引用,也就是被括号括起来的内容,在以后再次引用。\1代表引用前面出现第一个小括号的内容。

三、扩展正则表达式元字符  (grep -E=egrep)                                                     

元字符与上面相同的是

  • .
  • []
  • [^]
  • *
  • ?没有反斜线
  • {m,n}  没有反斜线
  • ^
  • ^$
  • \<
  • \>
  • ()没有反斜线

不同的是:

  +:匹配其前面的字符至少一次

  |:或者or的意思。C|cat的意思是C或者cat。(C|c)at代表Cat或者cat。以至少一个空白字符开头的行:

posted @ 2014-11-05 22:32  冥草有心  阅读(420)  评论(0编辑  收藏  举报