19.每日一个Linux命令----grep

描述:在指定的文件或标准输出、标准输入内,查找知足条件的内容,起过滤做用,支持正则表达式。正则表达式

用法:grep [option] 文件名shell

经常使用参数:bash

-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不一样,因此大小写视为相同
-n :顺便输出行号
-w: 整词比对, 相似 \<word\>
-c: 只输出符合比对的行数
-l: 只输出符合比对的文件名称
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
--color=auto :能够将找到的关键词部分加上颜色的显示喔

-R 递归,包含子目录

-E 扩展正则表达式

-q 安静模式,不输出结果

-F 搜索字符串

示例:1.显示/etc/passwd文件中含有root的行,并在行首加上所在行号。spa

[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的行。code

[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相等。get

egrep:字符串处理

为 grep 的扩充版本, 改良了许多传统 grep 不能或不便的操做. 比方说:it

- grep 之下不支持 ? 与 + 这两种 modifier, 但 egrep 则可。

- grep 不支持 a|b 或 (abc|xyz) 这类"或一"比对, 但 egrep 则可。

- grep 在处理 {n,m} 时, 需用 \{ 与 \} 处理, 但 egrep 则不需。

fgrep:

不做RE处理,表达式仅做通常字符串处理,全部meta均失去功能。

相关文章
相关标签/搜索