grep命令
通过搜索与PATTERN匹配的字段,在FILE文件中查找到匹配的字段并显示出来。
格式:grep [options] PATTERN [FILE...]
options
-A num:文本后几行
# grep -A 3 "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
-B #:模式之前的#行,也显示出来
-C #:模式前后#行,都显示出来
--colour=[颜色] 显示匹配的字体颜色
# grep --colour=auto "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
-c,--count :显示匹配行的总数
# grep -c "root" passwd
2
-E:作为egrep匹配处理
-e:作为包含以-为开头行,有效
-f:从文件中的每一行作为匹配模式来获取
-i:忽略匹配模式的大小写
# grep -i "root" passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ROOT:x:0:0:Root:/Root:/bin/bash
-n:在输出行前面标记上行号
# grep -n "root" passwd
1:root:x:0:0:root:/root:/bin/bash
12:operator:x:11:0:operator:/root:/sbin/nologin
-o:只显示于模式匹配的部分
# grep -o "root" passwd
root
root
root
root
-v:不取与之匹配的模式。
在grep中,元字符 ?, +, {, |, (, 和 ) 丧失了它们的特殊意义;作为替代,使用加反斜杠 \?, \+, \{, \|, \(, 和 \) 。
\?:0次或1次
\+:至少一次
\{\}:指定次数
\| :选择
\(\):分组
例如: # grep "\(l..e\).*\1" like
.:任意单个字符
\<锚定词首:
>\锚定词尾:
\<PATTEN>\:锚定一个模式,如单词,一个数
egrep命令:grep -E 与之类同
扩展正则表达式
元字符部分:
. :任意单个字符
? :最多匹配一次
*:零次或更多次
+:一次或更多次
{n}:精确匹配n次
{n,}:n次或更多次,至少n次
{n,m}:至少n次,但不多于m次
a|b,a或者b二选一
\<锚定词首
>\锚定词尾
()表示分组,().*\1前面的组再次出现后面
模式匹配的特殊写法部分,以下写法均代表一个字符,在grep和egrep中可以通用:
[:lower:]:小写字母
[:upper:]:大写 字母
[:digit:]:数字
[:alpha:]:大小写字母
[:alnum:]:大小写字母和数字
[:space:]:空格
[:punct:]:标点符号
fgrep命令:grep -F与之类同
快速正则表达式
grep把模式当做正则表达式看,fgrep把模式当做固定字符串看,所以后者要比前者速度快,当然同
时后者的搜索功能要弱于前者。
转载于:https://blog.51cto.com/gaolingxu/1416405