设为首页 收藏本站
查看: 668|回复: 6

[经验分享] Linux命令之grep

[复制链接]

尚未签到

发表于 2013-5-8 08:47:36 | 显示全部楼层 |阅读模式

grep


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

命令说明

将符合样式的该行列出

语法:grep [options]

参数

-A NUM  : 除了列出符合行之外,并且列出后NUM行

-a        : 可将二进制档案视为文本文件搜寻

-B NUM  : 与-A NUM行对,但此参数是显示符合行之外并显示在它之前的NUM行

-C [NUM],-NUM :列出符合行之外并列出上下各NUM行,默认是2

-b        :列出样式之前的内文总共有多少byte

-c        :不显示符合样式行,只显示符合的总行数

-d ACTION :若输入的档案是一个资料夹,使用ACTION去处理这个资料夹

             预设ACTION是read(读取),此资料夹会被视为一般的档案

             若ACTION是skip(略过),资料夹会被grep略过

             若ACTION是recurse(递归),grep会去读取资料夹下所有的档案 相当于-r

-E        :采用规则表示式去解释样式

-e PATIERN :把样式作为一个partern,通常用在避免partern用-开始

-f FILE    :事先将要搜寻的样式写入到一个档案,一行一个样式,然后采用档案搜寻

             空的档案表示没有要搜寻的样式,因此也就不会有任何符合

-G        :将样式视为基本的规则表示式解释(此为预设)

-H        :在每个符合样式行前加上符合的文件名称,若有路径会显示路径

-h        :与-H参数相类似,但在输出时不显示路径

-I         :grep会强制认为此二进制档案没有包含任何搜寻样式

-i         :忽略大小写,包含要搜寻的样式及被搜寻的档案

-L        :不显示平常一般的输出结果,反而显示出没有符合的文件名称

-l         :不显示平常一般的输出结果,只显示符合的文件名称

-n        :在显示行前面,标上行号

-q        :不显示任何的一般输出

-R        :递归的,读取每个资料夹下的所有档案

-s        :不显示关于不存在或无法读取的错误讯息

-v        :显示除搜寻样式行之外的全部

-x        :将搜寻样式视为一行去搜寻,完全符合该“行”的行才会被列出

主要参数

[options]主要参数:

-c:只输出匹配行的计数。计算找到‘查找字符串’的次数

-i:不区分大 小写(只适用于单字符)。

-h:查询多文件时不显示文件名。

-l:查询多文件时只输出包含匹配字符的文件名。

-n:显示匹配行及 行号。

-s:不显示不存在或无匹配文本的错误信息。

-v:显示不包含匹配文本的所有行。

patern正则表达式主要参数:

\   :忽略正则表达式中特殊字符的原有含义

^   :匹配正则表达式的开始行

$   :匹配正则表达式的结束行

\<  :从匹配正则表达式的行开始

\>  :到匹配正则表达式的行结束

[ ]  :单个字符,如[A]即A符合要求

[ - ] :范围,如[A-Z]即A到Z都符合要求

.   :所有的单个字符

*   :有字符,长度可以为0

命令实践

[iyunv@yubing ~]# last | grep 'root'     将含有root字符串的行显示出来

root     tty1                          Tue Apr 16 00:35   still logged in  

root     tty1                          Mon Apr 15 19:05 - crash  (05:28)   

root     pts/1        10.0.0.131       Mon Apr 15 02:20 - 03:33  (01:13)   

root     pts/1        10.0.0.131       Mon Apr 15 02:08 - 02:08  (00:00)   

root     pts/1        10.0.0.131       Mon Apr 15 02:00 - 02:07  (00:07)   

root     pts/0        10.0.0.131       Mon Apr 15 01:56 - crash  (17:08)   

root     pts/0        10.0.0.131       Mon Apr 15 01:49 - 01:56  (00:07)   

root     pts/0        10.0.0.131       Mon Apr 15 01:44 - 01:49  (00:04)   

root     tty1                          Mon Apr 15 01:38 - crash  (17:26)   

root     tty1                          Sat Apr 13 22:57 - crash (1+02:37)  

root     tty1                          Sat Apr 13 18:57 - crash  (03:59)   

[iyunv@yubing ~]# last | grep -v 'root'    -v反向提取,将不含root的行过滤出来

yubing   pts/0        10.0.0.131       Tue Apr 16 00:36   still logged in  

reboot   system boot  2.6.18-194.el5   Tue Apr 16 00:33          (00:04)   

yubing   pts/0        10.0.0.131       Mon Apr 15 19:05 - crash  (05:28)   

reboot   system boot  2.6.18-194.el5   Mon Apr 15 19:05          (05:33)   

yubing   pts/1        10.0.0.131       Mon Apr 15 03:43 - 03:50  (00:07)   

yubing   pts/1        10.0.0.131       Mon Apr 15 03:34 - 03:43  (00:08)   

reboot   system boot  2.6.18-194.el5   Mon Apr 15 01:36          (23:01)   

reboot   system boot  2.6.18-194.el5   Mon Apr 15 01:35          (23:03)   

reboot   system boot  2.6.18-194.el5   Sat Apr 13 22:57         (2+01:41)  

reboot   system boot  2.6.18-194.el5   Sat Apr 13 18:50         (2+05:48)  

wtmp begins Sat Apr 13 18:50:02 2013

[iyunv@yubing ~]# last | grep 'root' | cut -d '' -f1   ‘’中间没加空格,所以没显示

root     tty1                          Tue Apr 16 00:35   still logged in  

root     tty1                          Mon Apr 15 19:05 - crash  (05:28)   

root     pts/1        10.0.0.131       Mon Apr 15 02:20 - 03:33  (01:13)   

root     pts/1        10.0.0.131       Mon Apr 15 02:08 - 02:08  (00:00)   

root     pts/1        10.0.0.131       Mon Apr 15 02:00 - 02:07  (00:07)   

root     pts/0        10.0.0.131       Mon Apr 15 01:56 - crash  (17:08)   

root     pts/0        10.0.0.131       Mon Apr 15 01:49 - 01:56  (00:07)   

root     pts/0        10.0.0.131       Mon Apr 15 01:44 - 01:49  (00:04)   

root     tty1                          Mon Apr 15 01:38 - crash  (17:26)   

root     tty1                          Sat Apr 13 22:57 - crash (1+02:37)  

root     tty1                          Sat Apr 13 18:57 - crash  (03:59)   

[iyunv@yubing ~]# last | grep 'root' | cut -d ' ' -f1     加了空格才过滤了

root

root

root

root

root

root

root

root

root

root

root

[iyunv@yubing ~]# grep 'MANPATH' /etc/man.config  取出/etc/man.config内含MANPATH的那几行

# when MANPATH contains an empty substring), to find out where the cat

# MANPATH               manpath_element [corresponding_catdir]

# MANPATH_MAP           path_element    manpath_element

# Every automatically generated MANPATH includes these fields

MANPATH /usr/man

MANPATH /usr/share/man

MANPATH /usr/local/man

MANPATH /usr/local/share/man

MANPATH /usr/X11R6/man

# MANPATH       /opt/*/man

# MANPATH       /usr/lib/*/man

# MANPATH       /usr/share/*/man

# MANPATH       /usr/kerberos/man

# Set up PATH to MANPATH mapping

MANPATH_MAP     /bin                    /usr/share/man

MANPATH_MAP     /sbin                   /usr/share/man

MANPATH_MAP     /usr/bin                /usr/share/man

MANPATH_MAP     /usr/sbin               /usr/share/man

MANPATH_MAP     /usr/local/bin          /usr/local/share/man

MANPATH_MAP     /usr/local/sbin         /usr/local/share/man

MANPATH_MAP     /usr/X11R6/bin          /usr/X11R6/man

MANPATH_MAP     /usr/bin/X11            /usr/X11R6/man

MANPATH_MAP     /usr/bin/mh             /usr/share/man

[iyunv@yubing ~]#

[iyunv@yubing ~]# dmesg | grep 'eth'    列出内核,找出内含eth的那几行

e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection

e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None

eth0: no IPv6 routers present

[iyunv@yubing ~]# dmesg | grep -n --color=auto 'eth'    加上行号并显色

547:e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection

571:e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None

575:eth0: no IPv6 routers present

[iyunv@yubing ~]# dmesg | grep -n -A3 -B2 --color=auto 'eth'  前两行与后三行也显示出来

545-PCI: Setting latency timer of device 0000:02:01.0 to 64

546-e1000: 0000:02:01.0: e1000_probe: (PCI:66MHz:32-bit) 00:0c:29:aa:91:8c

547:e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection

548-input: PC Speaker as /class/input/input4

549-piix4_smbus 0000:00:07.3: Found 0000:00:07.3 device

550-piix4_smbus 0000:00:07.3: Host SMBus controller not enabled!

--

569-EXT3-fs: mounted filesystem with ordered data mode.

570-Adding 1052248k swap on /dev/sda2.  Priority:-1 extents:1 across:1052248k

571:e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None

572-NET: Registered protocol family 10

573-lo: Disabled Privacy Extensions

574-IPv6 over IPv4 tunneling driver

575:eth0: no IPv6 routers present

[iyunv@yubing ~]#

grep -n ‘t[ae]st’ regular.txt

              要查找的是tast或test两个字符

grep -n ‘oo’ regular.txt

              查找有oo的字符,只要含有oo都会显示

grep -n ‘[^g]oo’ regula.txt

              [^]集合字符的反向选择,不想要oo前面有g的

grep -n ‘[^a-z]oo’ regular.txt

              oo前面不要有小写字符

grep -n ‘[0-9]’ regular.txt

              查找有数字的那一行

grep -n ‘^the’ regular.txt

            以the开头

grep -n ‘^[a-z]’ regular.txt

            开头是小写字符的那一行

grep -n ‘^[a-zA-Z]’ regular.txt

            不要开头是英文字母

grep -n ‘\.$’ regular,txt

            行尾结束为小数点的那一行

小数点是有其他意义,必须要使用转义字符 \ 来加以解除其特殊意义

grep -n ‘^$’ regular.txt

            找出哪一行是空白行

grep -v ‘^$’ /etc/svslog.conf | grep -v “^#”

            不要空白行,也不要开头是#的那一行

^符号在[ ]内代表反向选择,在[ ]外则代表定位在行首的意思

.(小数点):代表一定有一个任意字符的意思

*(星号):代表重复前一个0到无穷多次的意思,为组合形态

grep -n ‘g..d’ regular.txt

grep -n ‘o*’ regular.txt

  *代表的是重复0个或多个前面的RE字符的意义,因此“o*”代表的是具有空字符或一个o以上的字符

grep -n ‘ooo*’ regular.txt

           需要至少两个o以上的字符串时,就需要ooo*

grep -n ‘goo*g’ regular.txt

因为{与}的字符在shell是有特殊意义的,必须使用转义字符来让它失去特殊意义

grep -n ‘o\{2\}’ regular.txt    找到两个o的字符串

grep -n ‘go\{2,5\}g’ regular.txt    2-5个o

grep -n ‘go\{2,\}g’ regular.txt     2个以上



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-5713-1-1.html 上篇帖子: Linux命令之finger 下篇帖子: Linux文件实时同步--inotify + rsync + pyinotify Linux

尚未签到

发表于 2013-5-8 13:48:29 | 显示全部楼层
帮帮顶顶!!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-23 20:58:06 | 显示全部楼层
路边的野花不要,踩。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-6-6 23:00:17 | 显示全部楼层
如果没有毛片,中国的性教育简直就是一片空白!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

发表于 2013-6-20 17:16:22 | 显示全部楼层
啥时硬件也可以COPY就好了!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

发表于 2013-6-28 15:57:03 | 显示全部楼层
我是来刷分的,嘿嘿

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-8-22 17:10:35 | 显示全部楼层
我的id是假冒的,大家不要相信我是骗子。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表