grep (文本过滤器)
可以在文本的前面也可以在后面
BRE
字符匹配: , [] [^]
次数匹配:*,\? \+ \{n\} \{n,m\}
位置锚定 \< \b 和\> \b 是一样的
分组: \(\)
看作一个整体
向后引用: \1,\2,.......
以上分别匹配第一个和第二个左括号与其对应的右括号中间的内容进行应用
egrep = grep -E
扩展正则表达式的元字符
字符匹配
. 任意一个字符
[] 括号内的任意字符
[^] 除括号内的任意字符
次数匹配
* 0次或n次前面的字符
? :0或1次
+ : 一次或多次
{m}:匹配m次
{n,m}:匹配至少n次,做多m次
锚定:
^:行首
$:行尾
\< \b 左侧锚定,锚定词首
\> \b 右侧锚定,锚定词尾
分组:
()把括号内的看成一组数据可以引用他
反向引用, \1, \2.......
或者:
a|b:标识a或b
C|cat :表示C 或者cat
(C|c)at: 表示 Cat 或者cat
1、grep -E "^(root|centos|user1)" /etc/passwd | cut -d: -f 1,3,7
找到用户名root suer1 centos 三个用户的id和默认shell
2、使用echo输出一个绝对路径,然后取出器基名
3、找出ifconfig命令结果中1-255之间的数值
4、使用echo输出一个绝对路径,然后取出其目录名,类似dirname的结果