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
posted @ 2018-05-22 00:19  冰封眸  阅读(117)  评论(0编辑  收藏  举报