grep中的正则表达式

先决条件: 格雷普

null

基本正则表达式

正则表达式能够以非常灵活和简洁的方式匹配“文本字符串”。“文本字符串”可以进一步定义为单个字符、单词、句子或特定的字符模式。

就像shell的通配符一样,它用一个表达式匹配相似的文件名,grep使用一个不同类型的表达式来匹配一组相似的模式。

  • [ ] :匹配一组字符中的任意一个
  • []带连字符 :匹配范围字符中的任意一个
  • ^ :它后面的图案必须出现在每行的开头
  • ^与[]一起: 模式不能包含指定集合中的任何字符
  • $ :它前面的图案必须出现在每行的末尾
  • (点) :匹配任意一个字符
  • (反斜杠) :忽略其后面字符的特殊含义
  • * :上一个字符的出现次数为零或更多
  • (点)* :没有或任何字符数。

例子

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

  1. $grep  “New[abc]”  filename
    

    它将搜索模式指定为:

    Newa , Newb or Newc
    
  2. $grep  “[aA]g[ar][ar]wal”  filename
    

    它将搜索模式指定为

    Agarwal , Agaawal , Agrawal , Agrrwal
    
    agarwal , agaawal , agrawal , agrrwal
    

(b) 将[]与连字符连用 :匹配范围字符中的任意一个

  1. $grep  “New[a-e]” filename
    

    它将搜索模式指定为

    Newa , Newb or Newc , Newd, Newe
    
  2. $grep  “New[0-9][a-z]”  filename
    

    它将搜索模式指定为:New后跟一个数字,然后是一个字母表。

    New0d, New4f etc
    

(c)使用^ :它后面的图案必须出现在每行的开头

  1. $grep  “^san”  filename
    

    搜索以san开头的行。它将搜索模式指定为

    sanjeev ,sanjay, sanrit , sanchit , sandeep etc.
    
  2. $ls –l |grep  “^d” 
    

    仅显示目录列表

  3. $ls –l |grep  “^-” 
    

    仅显示常规文件列表

(d) 将^与[]一起使用 :图案不得包含指定集合中的任何字符

  1. $grep  “New[^a-c]”  filename
    

    它指定包含单词“New”后跟除“a”、“b”或“c”以外的任何字符的模式

  2. $grep  “^[^a-z A-Z]”  filename
    

    搜索以非字母字符开头的行

(e) 使用$ :它前面的图案必须出现在每行的末尾

$ grep "vedik$" file.txt

(f) 使用。(点) :匹配任意一个字符

$ grep "..vik" file.txt
$ grep "7..9$" file.txt

(g) 使用(反斜杠) :忽略其后面字符的特殊含义

  1. $ grep "New.[abc]" file.txt

    它将搜索模式指定为新模式。[abc]

  2. $ grep "S.K.Kumar" file.txt
    

    它将搜索模式指定为

    S.K.Kumar
    

(h) 使用* :上一个字符的出现次数为零或更多

$ grep "[aA]gg*[ar][ar]wal" file.txt

(i) 使用(点)* :没有或任何字符数。

$ grep "S.*Kumar" file.txt

本文由 阿克谢·拉吉普特 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享