zoukankan      html  css  js  c++  java
  • shell学习--grep1

    一. grep的来源

    通过ex编辑器来查找某个字串:

    :/pattern/p

    其中p是打印,包含字符串pattern的第一行将被打印;如果需要打印包含pattern的所有行,可以这样:

    :/g/pattern/p

    当g出现在pattern前面时表示查找所有的行或者替换所有的行。

    而被查找的模式pattern称作正则表达式regular expression,因此用简写RE来替换pattern后就是:

    :g/RE/p

    这就是grep的来历,即它表示“全局查找正则表达式并打印结果行“

    二. grep如何工作

    1. 命令格式

    grep word filename filename..

    其中word是我们要查找的字符串模式;模式后面所有单词都被视为文件名。

    查找到模式后,将结果所在行打印到屏幕;整个过程它不会修改任何文件。

    2. 输入文件

    grep的输入可以来自标准输入或者管道,而不仅仅是文件。

    例如:

    (1 )管道输入

    ps -ef | grep root  

    (2) 标准输入

    grep  root ( )

    test root administrator

    3. 元字符和选项

    grep支持的元字符有如下:

      ^ : 行首定位符

      $: 行尾定位符

      .: 匹配单个字符

      *: 匹配0个或多个

      []: 匹配一组字符中的任意一个

      [x-y]: 匹配制定范围内的一个字符

      [^] :匹配不在指定范围内的字符

      : 转意字符

      <: 词首定位符

      >: 词尾定位符

      (..): 匹配稍后将要使用的字符的标签

      x{m}或x{m,}或x{m,n} : 字符x的重复出现:m次,至少m次,至少m次但不超过n次

      w:所有字母与数字,即[a-zA-Z0-9]

      W:所有字母与数字之外的字符,即[^a-zA-Z0-9]

      :词边界

      +: 匹配一个或多个前导字符

      ?: 匹配零个或一个前导字符

      a|b|c: 匹配a或b或c

      ():组字符

      (..)(...) 1 2:标签匹配字符

      

     

    grep常用的选项包括:

      -b  在每一行前面加上其所在的块号,根据上下文定位磁盘块时可能会用到

      -c  显示匹配到的行的数目,而不显示行的内容

      -h  不显示文件名

      -i  比较字符时忽略大小写的区别

      -l  只列出匹配行所在的文件名,每个文件名只列一次,文件名之间用换行符分隔

      -n  在每一行前面加上它在文件中的相对行号

      -s  无声操作,只显示报错信息,以检查退出状态

      -v  反向查找,只显示不匹配的行

      -w  把表达式作为词来插座,就像它被<和>所包含一样

       -r  要求搜索子目录

       -F   不识别表达式中的元字符,所有字符仅代表他们自身 

    4. grep的退出状态

      grep退出时会返回一个状态,以表示是否定位到需要查找的模式或文件。

      如果找到模式,grep退出状态为0,表示成功,否则返回1;

      当grep没有找到制定的搜索文件时,grep返回状态2。

      在执行完grep查找后,在sh中可以通过“echo $?”来查看其推出状态。

  • 相关阅读:
    洛谷单元最短路标准版——spfa优化
    airline
    有依赖的背包
    挖地雷
    带分数问题
    子集和问题
    循环比赛日程表
    传纸条
    机器分配
    分组背包
  • 原文地址:https://www.cnblogs.com/liuhailong0112/p/5801257.html
Copyright © 2011-2022 走看看