一、grep
grep [option] PATTERN [FILE...] 根据模式搜索文本,并将符合模式的文本行显示出来
Pattern: 文本字符和正则表达式的元字符组合而成的元字符
-i 忽略大小写
--color 匹配字符高亮 例子 grep --color ‘root‘ /etc/passwd
-v 反向显示,匹配到的不显示,显示没有匹配到的行
-o 只显示被模式匹配到的字符串
alias grep=‘grep --color‘
grep ‘root‘ /etc/passwd
二、正则表达式 Regular Expression (REGEXP)
元字符 意义不同于 globy
1).:任意单个字符
[] :任意单个字符
[^] :之外的任意单个字符
[:digit:] [:lower:] [:upter:]
[:punt:]
2)字符个数:
*:匹配其前面的字符任意次
.*:任意长度的任意字符
?:匹配其前面的字符1次或0次 需要反斜线转义
\{m,n\}:匹配之前的字符至少m次,至多N次 转义,防止命令行展开。
\{1,\}:至少1次
\{0,3\}:至多3次
3)位置锚定
^:行首,此字符后面的任意内容必须出现在行首
$:行尾。
^$:空行
\<或\b:锚定单词,后面的任意字符必须作为单词首部出现
\>或\b:前面的任意字符必须作为单词的尾部出现
4)分组
\(\)
\(ab\)* :ab出现0次或任意次
\<root\> 作为root整个单词出现
以数字结尾的行
[0-9]$ 或 grep ‘[[:digit:]]$‘ /etc/inittab
匹配以一个或多个空格加数字结尾的行
[[:space:]][0-9]$
grep ‘^r..t‘ /etc/passwd
grep ‘y$‘ 以y结束的行
grep ‘r..t‘ /etc/passwd :以r开头,以t结尾,中间有两个字符
ab,aab,acb,adb,amnb
a*b 指示 a出现任意次之后,出现了一个b
a.*b 指示 ab 中间夹了任意长度的任意字符
grep ‘a.*b‘ test.txt
默认模式下,正则匹配工作在贪婪模式下
例如ab中间加了一些字符,其中含有b,但是会匹配最后 一个b
grep ‘a\?b‘ test.txt 整个串不符合,但是局部符合也是可以匹配成功的
所以,能匹配上的有
b
ab
aab
acb
adb
amnb
amnbmnbmnb