|
grep来自于英文词组“global search regular expression and print out the line”的缩写,意思是用于片面搜寻的正则表白式,并将后果输入。人们通常会将grep命令与正则表白式搭配使用,参数作为搜寻过程当中的增补或对输入后果的筛选,命令模式非常灵敏。
与之容易混杂的是egrep命令和fgrep命令。假如把grep命令当做是规范搜寻命令,那末egrep则是扩展搜寻命令,等价于“grep -E”命令,反对扩展的正则表白式。而fgrep则是疾速搜寻命令,等价于“grep -F”命令,不反对正则表白式,间接根据字符串内容进行婚配。
语法格局:grep [参数] 文件
罕用参数:
-i
疏忽大小写
-c
只输入婚配行的数量
-l
只列出合乎婚配的文件名,不列出详细的婚配行
-n
列出一切的婚配行,显示行号
-h
查问多文件时不显示文件名
-s
不显示不存在、没有婚配文本的过错信息
-v
显示不包孕婚配文本的一切行
-w
婚配整词
婚配整行
-r
递归搜寻
-q
阻止输入任何后果,已退出形态表现搜寻是不是胜利
-b
打印婚配行距文件头部的偏移量,以字节为单位
-o
与-b结合使用,打印婚配的词据文件头部的偏移量,以字节为单位
-F
婚配固定字符串的内容
-E
反对扩展的正则表白式
参考实例
搜寻某个文件中,包孕某个症结词的内容:
[root@linuxcool ~]# grep root /etc/passwdroot:x:0:0:root:/root:/bin/bashoperator:x:十一:0:operator:/root:/sbin/nologin
搜寻某个文件中,以某个症结词结尾的内容:
[root@linuxcool ~]# grep ^root /etc/passwdroot:x:0:0:root:/root:/bin/bash
搜寻多个文件中,包孕某个症结词的内容:
[root@linuxcool ~]# grep linuxprobe /etc/passwd /etc/shadow/etc/passwd:linuxprobe:x:1000:1000:linuxprobe:/home/linuxprobe:/bin/bash/etc/shadow:linuxprobe:$6$9Av/41hCM17T2PrT$hoggWJ3J/j6IqEOSp62elhdOYPLhQ1qDho7hANcm5fQkPCQdib8KCWGdvxbRvDmqyOarKpWGxd8NAmp3j2Ln00::0:99999:7:::
搜寻多个文件中,包孕某个症结词的内容,不显示文件称号:
[root@linuxcool ~]# grep -h linuxprobe /etc/passwd /etc/shadowlinuxprobe:x:1000:1000:linuxprobe:/home/linuxprobe:/bin/bashlinuxprobe:$6$9Av/41hCM17T2PrT$hoggWJ3J/j6IqEOSp62elhdOYPLhQ1qDho7hANcm5fQkPCQdib8KCWGdvxbRvDmqyOarKpWGxd8NAmp3j2Ln00::0:99999:7:::
输入在某个文件中,包孕某个症结词行的数量:
[root@linuxcool ~]# grep -c root /etc/passwd /etc/shadow/etc/passwd:2/etc/shadow:1
搜寻某个文件中,包孕某个症结词地位的行号及内容:
[root@linuxcool ~]# grep -n network anaconda-ks.cfg17:network --bootproto=static --device=ens160 --ip=192.168.10.10 --netmask=255.255.255.0 --onboot=off --ipv6=auto --activate18:network --hostname=linuxcool.com
搜寻某个文件中,不包孕某个症结词的内容:
[root@linuxcool ~]# grep -v nologin /etc/passwdroot:x:0:0:root:/root:/bin/bashsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltlinuxprobe:x:1000:1000:linuxprobe:/home/linuxprobe:/bin/bash
搜寻以后任务目录中,包孕某个症结词内容的文件,未找到则提醒:
[root@linuxcool ~]# grep -l root *anaconda-ks.cfggrep: Desktop: Is a directorygrep: Documents: Is a directorygrep: Downloads: Is a directoryinitial-setup-ks.cfggrep: Music: Is a directorygrep: Pictures: Is a directorygrep: Public: Is a directorygrep: Templates: Is a directorygrep: Videos: Is a directory
搜寻以后任务目录中,包孕某个症结词内容的文件,未找到不提醒:
[root@linuxcool ~]# grep -sl root *anaconda-ks.cfginitial-setup-ks.cfg
递归搜寻,不只搜寻指定目录,还搜寻其内子目录内是不是无关键词文件:
[root@linuxcool ~]# grep -srl root /etc/etc/fstab/etc/X十一/xinit/Xclients/etc/X十一/xinit/xinitrc/etc/libreport/events.d/collect_dnf.conf/etc/libreport/events.d/bugzilla_anaconda_event.conf/etc/libreport/forbidden_words.conf………………省略部份输入信息………………
搜寻某个文件中,精准婚配到某个症结词的内容(搜寻词应与整行内容彻底同样才会显示,有别于个别搜寻):
[root@linuxcool ~]# grep -x cd anaconda-ks.cfg[root@linuxcool ~]# grep -x cdrom anaconda-ks.cfgcdrom
判别某个文件中,是不是包孕某个症结词,经过前往形态值输入后果(0为包孕,1为不包孕),便利在Shell脚本中判别和调用:
[root@linuxcool ~]# grep -q linuxprobe anaconda-ks.cfg[root@linuxcool ~]# echo $?0[root@linuxcool ~]# grep -q linuxcool anaconda-ks.cfg[root@linuxcool ~]# echo $?1
搜寻某个文件中,空行的数量:
[root@linuxcool ~]# grep -c ^$ anaconda-ks.cfg6
|
|