1. -c 选项
-c 选项表示输出匹配字符串行的数量,默认情况下,grep 命令打印出包含模式的所有行,一旦加上这个参数-c 选项,就只显示包含模式行的数量,下面给出一个使用-c选项的例子。
[root@startup etc]# grep -c ”pass” sudoers
3
2. -n 选项
-n 选项列出所有的匹配行,并显示行号,默认情况下,grep搜索单个文件时,只显示每行内容,加上-n选项后,将在行内容前附加显示行号,下面给出-n选项的例子
[root@startup etc]# grep -n ”pass” sudoers
77:## Same thing without a password
83:## Uncomment to allow any user to run sudo if they know the password
85:# Defaults targetpw # Ask for the password of the target user
3. -v 选项
-v 选项显示不包含模式的所有行,下面给出一个使用-v 选项的例子。
[root@startup etc]# grep -v ”root” passwd
bin:x:1:1:bin:/bin:/bin/false
daemon:x:2:2:daemon:/sbin:/bin/false
mail:x:8:12:mail:/var/spool/mail:/bin/false
ftp:x:14:11:ftp:/srv/ftp:/bin/false
http:x:33:33:http:/srv/http:/bin/false
nobody:x:99:99:nobody:/:/bin/false
dbus:x:81:81:System message bus:/:/bin/false
ldap:x:439:439::/var/lib/openldap:/bin/false
avahi:x:84:84:avahi:/:/bin/false
usbmux:x:140:140:usbmux user:/:/sbin/nologin
rtkit:x:133:133:RealtimeKit:/proc:/sbin/nologin
inits:x:1000:1000::/home/inits:/bin/bash
dnsmasq:x:999:999:dnsmasq daemon:/:/sbin/nologin
mysql:x:89:89::/var/lib/mysql:/bin/false
dovecot:x:76:76:Dovecot user:/var/empty:/sbin/nologin
dovenull:x:74:74:Dovecot user for completely untrustworthy processes:/var/empty:/sbin/nologin
news:x:9:13::/home/news:/bin/bash
dspam:x:115:115:DSPAM Daemon:/var/lib/dspam:/bin/false
gdm:x:120:120:Gnome Display Manager:/var/lib/gdm:/sbin/nologin
nm-openconnect:x:104:104:NetworkManager user for OpenConnect:/:/sbin/nologin
hal:x:82:82:HAL daemon:/:/bin/false
这样包含root的行都没有了。
4. -i 选项
默认情况下,grep命令对大小写是敏感的,如果加上-i 选项就表示grep 命令不区分大小写
[root@startup etc]# grep -i ”gnome” passwd
gdm:x:120:120:Gnome Display Manager:/var/lib/gdm:/sbin/nologin
5. -h 选项
-h 选项表示查询多个文件时,不显示文件名,默认情况下,grep命令查询多个文件时在匹配行之前显示文件名,加上-h过后,grep
命令就不会在显示文件名
6. -l 选项
-l 选项表示只列出符合匹配的文件名,而不列出具体匹配的行
7. -s 选项
-s 选项表示不显示不存在或无匹配文本的错误信息,默认情况下,grep 在待搜索文件不存在匹配的文本行,就会把错误信息打印
出来,下面给出-s使用例子
[inits@startup etc]$ grep ”password” *
grep: adobe: Is a directory
grep: at-spi2: Is a directory
grep: autofs: Is a directory
8. -r 选项
默认情况下,grep命令只对当前目录下的文件进行搜索,而不对子目录进行搜索,-r表示递归搜索,不仅搜索当前目录,而且搜索子目录
[inits@startup etc]$ grep -r ”password” *
libvirt/qemu.conf:# vnc_password = ”XYZ12345″
libvirt/qemu.conf:# The default SPICE password. This parameter is only used if the
libvirt/qemu.conf:# per-domain XML config does not already provide a password. To
libvirt/qemu.conf:# allow access without passwords, leave this commented out. An
libvirt/qemu.conf:# empty string will still enable passwords, but be rejected by
9. -w 和 -x选项
grep 命令的模式是支持正则表达式的,正则表达式的元字符将被解释成特殊的含义,-w选项表示匹配整个词,因此,grep 命令使用-w 选项后
元字符不再被解释为特殊含义
[inits@startup etc]$ grep -w password* *
grep: adobe: Is a directory
login.defs:# PASS_MAX_DAYS Maximum number of days a password may be used.
login.defs:# PASS_MIN_DAYS Minimum number of days allowed between password changes.
login.defs:# PASS_WARN_AGE Number of days warning given before a password expires.
login.defs:# Max number of login retries if password is bad
-x 则是匹配整行,即只有当文件中有整行内容与模式匹配时,grep命令才输出该行结果
2.Grep 配合正则表达式使用方法
1.匹配行首
元字符”^” 表示行首,若需要匹配.pem 为后缀文件中以横杠(_) 开头的行,可输入如下所示命令:
grep ^-*.pem
2. 匹配空白行
grep -c ^$ 00.pm
3. 设定大小写
在grep中利用-i可以是命令不区分大小写,然而我们使用[]符号来也可以实现这个功能
grep -n [Cc]ertificate 00.pem
4. 匹配重复字符串
匹配重复字符串通常可以利用”.” 符号和”*” 符号来实现
grep ^/…./ 00.pem
表示搜索00.pem 中以/字符开始,中间4个任意字符,第6个字符为/的行
grep ^-*B 00.pem
表示搜索以”-” 开头,重复“-”符号任意次,然后是B字符的行
5. 转意字符
当搜索的文本中含有转意字符时候我们可以使用\ 来转意,这样就不会报错了。
6. 精确匹配
当我们搜索内容需要精确匹配某个词时候,我们可以使用精准匹配符”\<\>”,同时w也可以用于精准匹配
grep ”\<the\>” === grep -w the