ITPub博客

首页 > Linux操作系统 > Linux操作系统 > linux命令总结-grep

linux命令总结-grep

原创 Linux操作系统 作者:shadowfalao 时间:2007-07-20 11:07:04 0 删除 编辑

grep是linux下面最经典的字符操作命令之一,使用规范:

grep [options] PATTERN [FILE...]

从指定的文件或输入中搜索字符串。是DBA和SA最有用的工具之一,
平常的日志分析少不了它,包括的参数很多,
有几个常用的参数对DBA来说很有用

-A num 在使用这个参数的同时,必须指定一个数字,
目的是返回从匹配行开始追随的后几行。
比如: 文件 install.log

Installing hwdata-0.146.18.EL-1.noarch.
Installing indexhtml-4.1-1.noarch.
Installing libgcc-3.4.5-2.i386.
Installing redhat-logos-1.1.26-1.noarch.
Installing rootfiles-8-1.noarch.
Installing setup-2.5.37-1.3.noarch.
Installing filesystem-2.3.0-1.i386.
Installing basesystem-8.0-4.noarch.
Installing termcap-5.4-3.noarch.
Installing tzdata-2006a-1.EL4.noarch.
Installing glibc-common-2.3.4-2.19.i386.
Installing glibc-2.3.4-2.19.i686.

.....

[@more@]

我们搜索glibc是否安装

[root@rac1 ~]# grep "glibc" install.log
Installing glibc-common-2.3.4-2.19.i386.
Installing glibc-2.3.4-2.19.i686.
Installing glibc-kernheaders-2.4-9.1.98.EL.i386.
Installing glibc-headers-2.3.4-2.19.i386.
Installing glibc-devel-2.3.4-2.19.i386.
compat-glibc-2.3.2-95.30.i386.rpm
compat-glibc-headers-2.3.2-95.30.i386.rpm
glibc-2.3.4-2.19.i386.rpm
glibc-profile-2.3.4-2.19.i386.rpm
glibc-utils-2.3.4-2.19.i386.rpm

如果使用了-A 1 参数后呢
[root@rac1 ~]# grep -A 1 "glibc" install.log
Installing glibc-common-2.3.4-2.19.i386.
Installing glibc-2.3.4-2.19.i686.
Installing audit-libs-1.0.12-1.EL4.i386.
--
Installing glibc-kernheaders-2.4-9.1.98.EL.i386.
Installing glibc-headers-2.3.4-2.19.i386.
Installing glibc-devel-2.3.4-2.19.i386.
Installing gcc-3.4.5-2.i386.
--
compat-glibc-2.3.2-95.30.i386.rpm
compat-glibc-headers-2.3.2-95.30.i386.rpm
convmv-1.08-3.EL.noarch.rpm
--
glibc-2.3.4-2.19.i386.rpm
glibc-profile-2.3.4-2.19.i386.rpm
glibc-utils-2.3.4-2.19.i386.rpm
gnome-audio-extra-2.0.0-1.noarch.rpm
以上结果返回了每个匹配行后的下一行,在平常的日志分析中,这个选项可能会用到

-B num 跟-A参数相同,搜索顺序正好相反,同时返回匹配行的前几行
-a 对一个二进制文件进行搜索

-c 输出匹配的总行数
[root@rac1 ~]# grep -c "glibc" install.log
10
-E 对grep的扩展,可以进行多个匹配查找
[root@rac1 ~]# grep -E "glibc|tzdata" install.log
Installing tzdata-2006a-1.EL4.noarch.
Installing glibc-common-2.3.4-2.19.i386.
Installing glibc-2.3.4-2.19.i686.
Installing glibc-kernheaders-2.4-9.1.98.EL.i386.
Installing glibc-headers-2.3.4-2.19.i386.
Installing glibc-devel-2.3.4-2.19.i386.
compat-glibc-2.3.2-95.30.i386.rpm
compat-glibc-headers-2.3.2-95.30.i386.rpm
glibc-2.3.4-2.19.i386.rpm
glibc-profile-2.3.4-2.19.i386.rpm
glibc-utils-2.3.4-2.19.i386.rpm
先选择匹配glibc的行,再选择匹配tzdata的行,这个选项对我们分析
oracle的alert日志太有用了。

-i 对要搜索的字符忽略大小写
grep "glibc" install.log 返回匹配glibc的行
grep "GLIBC" install.log 返回匹配GLIBC的行
grep -i "glibc" install.log 返回匹配glibc,GLIBC的行

-n 返回匹配行的行号

[root@rac1 ~]# grep -n "glibc" install.log
13:Installing glibc-common-2.3.4-2.19.i386.
14:Installing glibc-2.3.4-2.19.i686.
626:Installing glibc-kernheaders-2.4-9.1.98.EL.i386.
627:Installing glibc-headers-2.3.4-2.19.i386.
628:Installing glibc-devel-2.3.4-2.19.i386.
779:compat-glibc-2.3.2-95.30.i386.rpm
780:compat-glibc-headers-2.3.2-95.30.i386.rpm
908:glibc-2.3.4-2.19.i386.rpm
909:glibc-profile-2.3.4-2.19.i386.rpm
910:glibc-utils-2.3.4-2.19.i386.rpm

-v 搜索不匹配的行
[root@rac1 ~]# more a.txt
dfdfdfdfffffffffffffffffffffffffff99090
AAFDFDBBdfdfdfdfdfdfd123
123fdfdfffAD
BBBBBdfdfdff0000
[root@rac1 ~]# grep -v "^AA" a.txt
dfdfdfdfffffffffffffffffffffffffff99090
123fdfdfffAD
BBBBBdfdfdff0000

-H 同时打印包括搜索字符串的文件名
[root@rac1 ~]# grep -i -H "^AA" a.txt
a.txt:AAFDFDBBdfdfdfdfdfdfd123

-R 递归搜索,当指定的搜索路径是一个目录时,加了-R的搜索会执行递归搜索
[root@rac1 ~]# grep -iHR "^AA" /root
/root/b/a.txt:AAFDFDBBdfdfdfdfdfdfd123

grep还可以使用正则表达式,利用正则表达式匹配搜索内容

grep -iH '^i_hang*' a.log 在a.log文件中查找以i_hang开始的行, 不区分大小写
grep -i '*net$' a.log 在a.log文件中查找以net结尾的行, 不区分大小写
grep -iE "^AA|^BB" a.txt 返回文件a中以AA或BB开头的行,不区分大小写
更多的正则表达式参考其他文档。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/129805/viewspace-927211/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: rman中压缩备份集
下一篇: 热
请登录后发表评论 登录
全部评论

注册时间:2009-12-18

  • 博文量
    45
  • 访问量
    444892