Appearance
常规匹配
cat /etc/passwd | grep foo
常用特殊字符
^
匹配一行的开头 cat /etc/passwd | grep ^f
$
匹配一行的结束 cat /etc/passwd | grep bash$
cat /etc/passwd | grep -n ^$ 匹配空行并显示行号
.
匹配一个任意的字符
cat /etc/passwd | grep r..t 匹配包含 r**t 的所有行
不单独使用,和上一个字符连用,表示匹配上一个字符 0 次或多次
cat /etc/passwd | grep ro*t 匹配 rt、rot、root、rooot... 的所有行
cat /etc/passwd | grep .* 匹配任意字符串,包括空字符串。
[]
字符区间,表示匹配某个范围内的一个字符。
[6,8]
匹配 6 或 8
[0-9]
匹配一个 0 - 9 的数字
[0-9]*
匹配任意长度的数字字符串
[a-z]
匹配一个 a - z 的字符
[a-z]*
匹配任意长度的字母字符串
[a-c,e-f]
匹配 a - c、e - f 之间的符号
cat /etc/passwd | grep r[a,b,c]*t cat /etc/passwd | grep r[abc]*t 可以省略逗号
\
转义
cat /etc/passwd | grep '$' 还必须加上单引号
匹配手机号
echo "13333333333" | grep ^1[34578][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$
grep 默认不支持 {} echo "13333333333" | grep ^1[34578][0-9]{9}$
-E 表示支持扩展的正则表达式 echo "13333333333" | grep -E ^1[34578][0-9]{9}$