grep print lines matching a pattern 打印行匹配模式

grep 此命令作用是用来查询和匹配文本文件中的某个字符串

例 grep 'root' /etc/passwd 此命令是用来匹配到passwd文件中含有root字符串的行

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


参数

-i 忽略大小写(即匹配字符串时大小写都会被匹配到)

--color 此参数是把匹配的字符串高亮显示(方便用户看到)

-v 反向匹配,意思是显示没有被匹配到的字符串所在行

-o 只显示匹配到的字符串


正则表达式 REGEXP(REGular EXPression)

元字符

    . 小数点 用来表示单个字符

    [] 中括号 表示匹配指定范围内的任意单个字符

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

        字符集合: [:digit:] 所有数字    [:alpha:] 所有字母(包含大小写)

                   [:lower:] 小写字母    [:upper:] 大写字母

                   [:punct:] 标点符号    [:space:] 空白字符

                   [:alnum:] 所有字母和数字



字符次数

    * 星号 匹配此前一个字符的任意次数

    .* 此两个符号结合才表示任意字符的任意长度

    \? 问号 表示匹配前面一个字符一次或0次

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

        \{0,3\} 前面字符匹配至少0次,至多3次。

        \{1,\} 表示前面字符至少1次,至多不限。


位置锚定

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

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

^$ 空白行


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

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

\<root\> 或 \broot\b 表示精确匹配此单词


分组

\(\) 此含义是此里边的字符串为一个组

\(ab\)* 表示括号内匹配0-无限次 即:abababab

后向引用

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

\2

\3 ...

解释:

grep '\([0-9]\).*\1$'  表示查找字符串 一行中前边出现的数字在字尾也必须出现相同的数字才会被匹配。



转载于:https://blog.51cto.com/winthcloud/1619615