linux三剑客之grep



  grep命令是一个强大的文本搜索工具,全称是Global Regular Expression Print,它能使用正则表达式搜索文本,并把匹配的行打印出来,使用权限是所有用户


1、使用格式

    grep [OPTIONS] PATTERN [FILE...]

    grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

    grep 关键词 文本文件


2、比较常用的参数

    -c:仅显示找到的次数

    -i:忽略大小写

    -n:显示行号

    -o:只显示被模式匹配到的字符串

    -v:反向匹配,仅列出没有"关键词"的行

    -E:使用扩展的正则表达式,可以添加多个搜索项,等价于egrep命令

    -A n:显示匹配到的行及其后n行

    -B n:显示匹配到的行及其前n行

    -C n:显示匹配到的行及其前n行和后n行

    --color[=auto]:查到的关键字高亮显示


3、简单实例

    以/etc/passwd文件作为查找文件,执行如下操作:

    

1)找到文件中带有root的行:

[root@acer ~]# grep "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

2)找到文件没有nologin的行:

[root@acer ~]# grep -v "nologin" /etc/passwd
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
ning:x:500:500::/home/ning:/bin/bash

3)找到文件中带有shutdown的行及其后5行:

[root@acer ~]# grep "shutdown" -A 5 /etc/passwd
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin


4、grep高级用法

    想要实现高级用法,须配合正则表达式及管道


1)找到文件中以root开头的行(锚定行首)

[root@acer ~]# grep "^root" /etc/passwd
root:x:0:0:root:/root:/bin/bash


3)显示文件中以a或b或c开头的行(正则表达式、锚定行首)

[root@acer ~]# grep "^[abc]" /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin


3)取出用户默认shell为bash的用户名及其UID(锚定行尾、管道、cut命令)

[root@acer ~]# grep "bash$" /etc/passwd | cut -d : -f1,3
root:0
ning:500


  总之,grep命令是一个很强大的文本搜索命令,它可以配合管道、重定向、正则表达式等实现强大的文本搜索功能,是linux中重要的命令之一。