Linux三剑客之grep
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
grep的三个兄弟
grep
使用方式:grep [OPTIONS] PATTERN [FILE...]
- 常用[OPTIONS]选项:
- --color=auto:对匹配到的文本着色显示;
- -v:显示不能被指定的PATTERN匹配到的行;
- -i:匹配时忽略字符大小写;
- -o:仅显示匹配到的内容本身,而不显示匹配到的整行;
- -q:静默模式,不输出任何信息;
- -c:显示匹配到的行的列数;
- -n:显示匹配到的行的行号;
- -e:可以使用该选项匹配多个模式;
- -b:在打印匹配行前面打印该行所在的索引(从0开始计数),一般和-o一起使用;
- -H:在显示符合范本样式的那一列之前,标示该列的文件名称;
- -A NUMBER:显示匹配到的行及后面NUMBER行;
- -B NUMBER:显示匹配到的行及前面NUMBER行;
- -C NUMBER:显示匹配到的行及前后NUMBER行;
- -E:使用扩展正则表达式,相当于使用egrep
# 匹配/etc/passwd中以三个字母开关的行
[root@oldboy68-23 ~]# grep --color=auto "^[[:alpha:]]\{3\}:" /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
- 注意:grep使用正则表达式时,() {} ? + <> b都需要转义,而使用选项-E也直接使用以上的符号(除<> b以外),不用转义成\(\),所以更多时候使用命令egrep指令
egrep
相当于grep -E,上例中用egrep指令来操作如下:
[root@oldboy68-23 ~]# egrep --color=auto "^[[:alpha:]]{3}:" /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
匹配/etc/passwd中用户名和用户shell同名的行
[root@oldboy68-23 ~]# egrep --color=auto "(^[^:]*\>).*\1$" /etc/passwd
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
fgrep
不使用正则表达式,直接用字面意思查找文件内容,效率更高
[root@oldboy68-23 ~]# fgrep "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin