grep ‘root’ /etc/passwd
-i 忽略字母大小写
--colour 加颜色 grep --colour ‘root’ /etc/passwd
-E 使用扩展正则表达式
-A #:显示其后#行
-B # 显示其前#行
-C # 显示其前后各#行
*:任意长度的任意字符
?: 任意单个字符
[]:
[^]:
a*b:匹配前面的a任意次
.*: 任意长度的任意字符
?: 匹配其前面的字符1次或0次(一般配合\?使用 )
\{m,n\}:匹配其前面的字符至少m次,至多n次
位置锚定:
^:此字符后面的任意字符必须出现在行首
grep ‘^root’ /etc/passwd
$:锚定行尾
grep ‘b..h$’/etc/passed匹配在passwd中以b开头,以h结尾的 ,中间有任意两个字符的行
^$:空白行
引用的时候用【】括起来
[:digit:]数字
[:lower:]小写字母
[:upper:]大写字母
[:punct:]标点符号
[:space:]空白字符
[:alpha:]所有字母
[:alnum:]所有数字和字母
\<:其后面的任意字符必须作为单词首部出现 等同于\b
\>:其前面的任意字符必须作为单词的尾部出现 等同于\b
例\<root\> 查找文本中root这个单词
\(\) :分组 多用于后项引用 用一个字符代替它
\(ab\)* ab可以出现一次零次或任意次
\1:引用第一个左括号以及与之对应的右括号所包含的所有内容
例:grep ‘\(l..e\).*\1’
扩展正则表达式:必须使用egrep 或者grep -E
字符匹配:
同上
次数匹配
*:
?:
+:其前字符至少一次
{m,n}:
分组:
():分组 不需要写斜线
或者:
| :or
例:找出/boot/grub/grub.conf 1-255之间的整数
grep --colour -E '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>' /boot/grub/grub.comf
找IP地址:
\<[1-9]|[1-9][0-9]|1[0-9]{2}|2[01][0-9]|22[0-3]\>(\.\<([0-9]|[1-9][0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4])\>)\>){2}\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4]\>