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