描述:在指定的文件或标准输出、标准输入内,查找满足条件的内容,起过滤作用,支持正则表达式。
用法:grep [option] 文件名
常用参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-w: 整词比对, 类似 \<word\>
-c: 只输出符合比对的行数
-l: 只输出符合比对的文件名称
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
--color=auto :可以将找到的关键词部分加上颜色的显示喔
-R 递归,包含子目录
-E 扩展正则表达式
-q 安静模式,不输出结果
-F 搜索字符串
示例:1.显示/etc/passwd文件中含有root的行,并在行首加上所在行号。
[root@share22 ~]# grep -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
2.显示/etc/passwd文件中不包含root的行。
[root@share22 ~]# grep -v root /etc/passwd
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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
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
games:x:12:100:games:/usr/games:/sbin/nolog
3.显示/etc 目录中(包含子目录)的所有文件中包含以yes结尾的行,并忽略大小写。
[root@share22 ~]# grep -iR 'yes$' /etc
/etc/yum/yum-cron.conf:update_messages = yes
/etc/yum/yum-cron.conf:download_updates = yes
/etc/systemd/bootchart.conf:#Filter=yes
/etc/systemd/journald.conf:#Compress=yes
/etc/systemd/journald.conf:#Seal=yes
/etc/systemd/journald.conf:#ForwardToSyslog=yes
/etc/systemd/logind.conf:#LidSwitchIgnoreInhibited=yes
/etc/systemd/system/getty.target.wants/getty@tty1.service:IgnoreOnIsolate=yes
/etc/systemd/system/getty.target.wants/getty@tty1.service:TTYReset=yes
/etc/systemd/system/getty.target.wants/getty@tty1.service:TTYVHangup=yes
/etc/systemd/system/getty.target.wants/getty@tty1.service:TTYVTDisallocate=yes
/etc/systemd/system/getty.target.wants/getty@tty1.service:SendSIGHUP=yes
/etc/systemd/system/multi-user.target.wants/kdump.service:RemainAfterExit=yes
4.grep命令不输出结果,通过命令返回值$?判断,常用于shell脚本中。
[root@share22 ~]# grep -q root /etc/passwd
[root@share22 ~]# echo $?
0
egrep 与 grep -E 相等;fgrep与grep -F相等。
egrep:
为 grep 的扩充版本, 改良了许多传统 grep 不能或不便的操作. 比方说:
- grep 之下不支持 ? 与 + 这两种 modifier, 但 egrep 则可。
- grep 不支持 a|b 或 (abc|xyz) 这类"或一"比对, 但 egrep 则可。
- grep 在处理 {n,m} 时, 需用 \{ 与 \} 处理, 但 egrep 则不需。
fgrep:
不作RE处理,表达式仅作一般字符串处理,所有meta均失去功能。
来源:oschina
链接:https://my.oschina.net/u/2711763/blog/690252