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

it2026-10-06  1

一、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。以至少一个空白字符开头的行:

转载于:https://www.cnblogs.com/mingcaoyouxin/p/4077506.html

最新回复(0)