Linux初识(八)正则表达式

正则表达式

一、什么是正则表达式

   正则表达式(Regular Expression,在代码中常简写为regex、regexp或RE)是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

  正则表达式用于字符串处理、表单验证等场合,实用高效。

   生活中处处都是正则:

      比如我们描述:4条腿

      你可能会想到的是四条腿的动物或者桌子,椅子等

    继续描述:4条腿,活的

          就只剩下四条腿的动物这一类了

    在linux中,通配符是由shell解释的,而正则表达式则是由命令解释的,下面就用grep解释正则。

二、grep

参数

-n  :显示行号   比如:#grep -n 'root' /etc/passwd
-o  :只显示匹配的内容   比如:#grep -o 'root' /etc/passwd
-q  :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容 比如:#grep -q 'root' /etc/passwd   #echo $?

-l  :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,比如:#grep -rl 'root' /etc/passwd
-A  :如果匹配成功,则将匹配行及其后n行一起打印出来, 比如:#grep -A 2 'root' /etc/passwd
-B  :如果匹配成功,则将匹配行及其前n行一起打印出来,比如:#grep -B 1 'root' /etc/passwd
-C  :如果匹配成功,则将匹配行及其前后n行一起打印出来,比如:#grep -C 2 'root' /etc/passwd
-c  :如果匹配成功,则将匹配到的行数打印出来,比如:#grep -c 'root' /etc/passwd
-E  :等于egrep,扩展,比如:#grep -E 'hello' a.txt
-i  :忽略大小写,比如:#grep -i 'ab' a.txt

-v  :取反,不匹配,比如:#grep -v 'hello' a.txt
-w:匹配单词,比如:#grep -w ‘hello’ a.txt

grep种类

grep
fgrep
pgrep
egrep

正则介绍

^ 行首  比如:#egrep '^root' 1.txt
  $ 行尾  比如:#egrep '$root' 1.txt
. 除了换行符以外的任意单个字符    比如: #egrep 'a.c' 1.txt
  * 前导字符的零个或多个    比如  : #egrep 'ab*c' 1.txt
  .* 所有字符       比如:  #egrep 'a.*c' 1.txt
  [] 字符组内的任一字符   比如: # egrep [abcde] 1.txt
  [^] 对字符组内的每个字符取反(不匹配字符组内的每个字符)     比如: # egrep [^abcde] 1.txt
^[^] 非字符组内的字符开头的行   比如: # egrep ^[^abcde] 1.txt
[a-z] 小写字母  比如: # egrep [a-z] 1.txt
[A-Z] 大写字母  比如: # egrep [A-Z] 1.txt
[a-Z] 小写和大写字母   比如: # egrep [a-Z] 1.txt
[0-9] 数字   比如: # egrep [0-9] 1.txt

{n} 匹配 {}前字符出现的n次的字符串  ,比如:# egrep 'ab{3}c' 1.txt

?  匹配 出现0或1次   比如:# egrep 'ab?c' 1.txt

|  管道分割符,“.....或者....”  比如:#egrep 'ab{4}c|ab{8}c' 1.txt   ,#egrep 'compan(y|ies)' 1.txt

{0,}  表示{}前的字符出现0到无穷次  ,比如:# egrep 'ab{0,}c' 1.txt


  

原文地址:https://www.cnblogs.com/guozhenle/p/6933747.html