Shell编程 之 正则表达式

1. 什么是正则表达式

  正则表达式是用于描述字符排列和匹配模式的一种语法规则。

  主要用于字符串的模式分割、匹配、查找 和 替换的操作。

2. 正则表达式与通配符

  2.1 通配符:

    --  *  匹配任意内容

    --  ?  匹配任意一个内容

    --  []  匹配中括号中的一个字符

  2.2 正则表达式与通配符:

    - 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式(搜索字符串的命令能识别正则)。

[root@localhost sh]# grep "echo" process.sh
echo "$$ is current PID: $$"
echo "$! is the last PID in background: $!"

    - 通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配(搜索文件的命令能识别通配符)。  

[root@localhost sh]# find . -name "abc*"
./abc
./abcd

3. 基础正则表达式

  

  tips:先在 .bashrc 下定义两个别名,然后 source .bashrc

    

  3.1 星号  *  :前一个字符匹配0次或任意多次

  3.2 逗点  .   :匹配除了换行符外任意一个字符

  3.3 尖角  ^   :匹配行首,^ 写在前面

  3.4 刀了  $   :匹配行尾,$ 写在后面

  3.5 中括  []   :匹配中括号中指定的任意一个字符

  3.6 中括内尖角  [^a-z]   :匹配除a到z外的任意一个字符

  3.7 转义符     :用于取消特殊符号的含义

  3.8 重复符号   {n}   :表示其前面的字符恰好出现n次

        重复符号   {n,}   :表示其前面的字符出现不小于n次

  3.9 重复次数   {n,m}  :匹配其前面的字符至少出现n次,最多出现m次

4. 案例

  例1:匹配日期格式 YYYY-MM-DD

    [ 0 - 9 ] { 4 }   -    [ 0 - 9 ] { 2 }    -    [ 0 - 9 ] { 2 }

  例2:匹配IP地址

    [ 0 - 9 ] {1 , 3 }  .  [ 0 - 9 ] { 1 , 3 }  .  [ 0 - 9 ] { 1 , 3 }  .  [ 0 - 9 ] { 1 , 3 } 

原文地址:https://www.cnblogs.com/wnzhong/p/6387975.html