联系我:新浪微博@阳光下的云朵2012或者zhangcaiyun_86#163.com(将#换成@)

读书笔记1——linux常用命令之grep命令的使用

上一篇 / 下一篇  2013-05-13 14:58:06 / 个人分类:职业发展

linux grep

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

卷二.格式

  grep [options]

卷三.主要参数
  1)[options]主要参数:
  -c:只输出匹配行的计数。
  -I:不区分大 小写(只适用于单字符)。
  -h:查询多文件时不显示文件名。
  -l:查询多文件时只输出包含匹配字符的文件名。
  -n:显示匹配行及 行号。
  -s:不显示不存在或无匹配文本的错误信息。
  -v:显示不包含匹配文本的所有行。
  2)pattern正则表达式主要参数:
  \: 忽略正则表达式中特殊字符的原有含义。
  ^:匹配正则表达式的开始行。
  $: 匹配正则表达式的结束行。
  \<:从匹配正则表达 式的行开始。
  \>:到匹配正则表达式的行结束。
  [ ]:单个字符,如[A]即A符合要求 。
  [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
  。:所有的单个字符。
  * :有字符,长度可以为0。

卷四.grep命令使用简单实例
  $ grep 'test' d*

  显示所有以d开头的文件中包含test的行。

  $grep 'test'aa bb cc

  显示在aa bb cc 文件中匹配test的行。

  $grep '[a-z]\{5\}' aa

  显示所有包含每个字符串至少有5个连续小写字符的字符串的行。

  $ grep ‘w\(es\)t.*\1′ aa
  如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着 另外一个es(\1),找到就显示该行。如果用egrep或grep -E,就不用”\”号进行转义,直接写成’w(es)t.*\1′就可以了。

卷五 grep命令使用复杂实例

   1.用'grep'搜索文本文件

   如果您要在几个文本文件中查找一字符串,可以使用'grep’命令。'qrep’在文本中搜索指定的字符串。
   假设在'/usr/src/linux/Documentation'目录下搜索带字符串'magic’的文件:
  $ grep magic /usr/src/linux/Documentation/*
  sysrq. txt:* How do I enable the magic SysRQ key?
  sysrq. txt:* How do I use    the magic SysRQ key?
  (即 'sysrq. txt’包含该字符串,讨论的是SysRQ的功能)
   默认情况下,'grep’只搜索当前目录。如果此目录下有许多子目录,‘grep’会以如下形式列出:
  grep:sound: Is a directory
   这可能会使'grep'的输出难于阅读。这里有两种解决办法:
   1)明确要求搜索子目录:grep -r
   2)忽略子目录:grep -d skip
   如果,预料到有许多输出,可以通过 管道 将其转到 'less'上阅读:
  $ grep magic /usr/src/linux/Documentation/* | less
  这样就可以方便的阅读。
有一点需要注意,你必须提供一个文件过滤方式(搜索全部文件的话用*)。如果忘记了,'grep’会一直等着,直到该程序被中断。如果你遇到了这样的情况,按<CRTL c>,然后再试。
 具体命令行参数在此略。
  2.搜索字符串
  命令格式:
  grep string filename
  寻找字符串的方法很多,比如说我想找所有以M开头的行,此时必须引进pattern的观念。以下是一些简单的口例,以及说明:
  ^M 以M开头的行,^表示开始的意思
  M$ 以M结尾的行,$表示结束的意思
  ^[0-9] 以数字开始的行,[]内可列举字母
  ^[124ab]以1,2,4,a或b开头的行
   由于没有一一跑过,如有问题,欢迎指正~~

TAG:

 

评分:0

我来说两句

Open Toolbar