shell脚本学习笔记之正则表达式

***基本正则表达式(可支持grep,sed,awk等shell工具)

* 0个或多个在*字符前面的那个普通字符
. 匹配任意字符
^ 匹配行首,或后面字符是非
$ 匹配行尾

[]匹配字符集合
\ 转义符,屏蔽一个元字符的特殊意义
\<\>  精确匹配符号
\{n\} 匹配前面字符出现n次
\{n,\} 匹配前面字符至少出现n次
\{n,m\} 匹配前面字符出现n~m次

注意:符号*前面必须至少有两个字符(当符号*后面没有字符时)或必须*前面至少有一个字符(当符号*后面至少有一个字符时)才有意义
      符号.前后必须同时有字符才有意义
    []使用时前面

1.符号*    0个或多个在*字符前面的那个普通字符
  例子  hel*o
   hel*o  可以是heo,helo,hello,helllo可以可以出现0到无穷次

2.字符 .   匹配任意字符
  例子  .7
   .7 首先这是两个字符,其中后面一个字符是7,而前面一个字符是任意一个键盘上可以输出的字符
  ...7  这是4个字符,最后一个还是7,前面3个字符是任意一个键盘上可以输出的字符

综合
  hel*o.  这个表示heo后面任意一个字符
                  helo后面任意一个字符
                  hello后面任意一个字符

hel.*o  这个就表示以hel开头,o结尾的任意字符都可以匹配

3.符号^    匹配行首,或后面字符是非
  例子  ^cloud
   ^cloud  这个表示行首的字符是cloud的行都会被匹配

综合
  ^h.*o  表示必须以行首h开头以o结尾中间任意字符

4.符号$  匹配行尾
   例子 hel$   表示必须以hel作为行尾
  
  综合 ^h.*o$   表示以h为行首以o为行尾中间任意字符
       ^$      表示为空
      ^hjo$    表示行首位h,行尾为o中间为j进行匹配,也就是说这                一个只有hjo才会被匹配

5.符号[]  匹配字符集合
  例子1.穷举
   [123456789]  表示匹配任意一个数字
  
  例子2.-的使用(范围)
   [1-9]   表示匹配任意一个数字
   [a-z]    匹配任意一个小写字母
   [A-Z]    匹配任意一个大写字母

[^] 
   ^在[]里表示取反
   例子[^b-d]  表示匹配不在b到d之间的所有字符
  
综合
   [A-Za-z] [A-Za-Z]*  匹配所有的英文单词
   [A-Za-z1-9] [A-Za-z1-9]* 匹配所有的英文单词和数字

6.符号\      转义符,屏蔽一个元字符的特殊意义
  \* 匹配*字符,

7.符号\<\>   精确匹配符号
     屏蔽<>
  例子\<the\>  匹配the单词而不是含有the的单词或行

8.\{\}系列符号    匹配前面字符重复出现的次数
   \{n\}           匹配前面字符出现n次
   例子
    a\{4\}   匹配aaaa

\{n,\}       匹配前面字符至少出现n次
  例子
    a\{2,\}  匹配aa,aaa,aaaa ......

\{n,m\}   匹配前面字符出现n~m次
    a{2,4\}  匹配aa,aaa,aaaa

综合
[a-z]\{5\}   匹配5个小写字母

++++++++++++++++++++++++++++++++++++++++++++++++++++++++

扩展正则表达式(支持awk,perl等工具)
? 匹配0个或1个在其之前的那个普通字符
+ 匹配1个或多个在其之前的那个普通字符
() 表示一个字符集合或用在表达式中
|  表示“或”,匹配一组可选的字符

1.符号?
  例子
  jo?b   匹配job joob

2.符号+
  例子 
  s+eu   匹配sseu ssseu......

3.符号() 和符号|      表示一组可选字符的集合
 例子
 re(a|e|o)d  匹配 read reed reod

4.符号|
  re1|re2|re3...

+++++++++++++++++++++++++++++++++++++++++++++++

通配(支持bash shell)
 符号*  表示任意位的任意字符
 符号? 表示一个任意字符
 符号^  表示取反
 符号[] 表示字符集合
 符号[^] 表示取反字符集合
 符号{}  表示一组表达式的集合

1.符号*
  例子 ls a*   查看所有以a开头的文件

2.符号?
  例子
  ls a?  查看以a开头的包含2个字符的文件

3.符号[]
  例子
  ls a[1-10] 查看a1.a2...a10
  ls a[a-z]* 查看以a开头的含有小写字母的文件
 
4.符号[^]
  例子
  ls a[^1-2]  查看不含有a1,a2的所有文件

5.符号{}
  例子
  ls a{[^1-2],a?,b*} 查看不包含a1,a2,的所有文件
                      或查看文件a和aa,或查看所有以b开头的文件

时间: 2024-10-31 11:03:53

shell脚本学习笔记之正则表达式的相关文章

shell脚本学习笔记系列--1

一.学好shell编程的知识储备 1.相关Linux系统命令应用: 2.Vi/vim 编辑器的熟练使用,相关客户端软件的设置: 3.基础的服务,系统服务ntp,crond,网络服务:nfs,rsync,inotify,sersync,ssh,lanmp等. 补充:清空日志的三种方法: 1)echo  " " > filename.log 2)>filename.log 3)cat  /dev/null > filename.log 注:工作中有的时候不能删除(日志)文

shell脚本学习笔记:通过shell实现linux用户管理和监控

学习shell做的第一个脚本,感谢云知梦李强强老师的shell编程教程 创建shell脚本文件: touch menu.sh touch index.sh touch welcome.sh 赋予脚本文件可执行权限: chmod a+x menu.sh index.sh welcome.sh menu.sh #!/bin/bash #menu.sh function menu(){ title="My Home" name="Randy" time=`date +%Y

shell脚本学习笔记 (sed的高级用法----模式空间和保持空间)

前段时间在学习shell脚本,上次有提到sed的模式空间和保持空间概念,但是一直没有研究好,这两天研究了一下,所以将它发出来,不是很全面,仅仅供大家参考一下. 保持空间sed在正常情况下,将处理的行读入模式空间,脚本中的"sed command(sed命令)"就一条接着一条进行处理,直到脚本执行完毕.然后该行被输出,模式被清空:接着,在重复执行刚才的动作,文件中的新的一行被读入,直到文件处理完毕. 模式空间可以比喻为一个生产线,而保持空间则可以被比喻为仓库,这个比喻希望可以帮助大家理解

Shell 脚本学习笔记十:Shell输入输出重定向

command > file       将输出重定向到 file. command < file       将输入重定向到 file. command >> file     将输出以追加的方式重定向到 file. n > file              将文件描述符为 n 的文件重定向到 file. n >> file             将文件描述符为 n 的文件以追加的方式重定向到 file. n >& m             

shell 脚本学习笔记--函数

一.定义格式 [function] 函数名() { 命令表 } 二.调用方法 先定义,后使用,直接输入函数名,不需要圆括号() 三.函数参数传递方法 可以利用位置参数或者变量进行传递 #! /bin/bash# myfirst.sh testFunction() { echo "$1,$2" #位置参数传递参数 echo "$val1,$val2" #变量传递参数 } val1="test1" val2="test2" tes

shell脚本学习笔记 (流编辑器sed)

sed意为流编辑器(Stream Editor),在Shell脚本和Makefile中作为过滤器使用很普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出. sed不只支持正則表達式.它另一些比較厉害的功能. 我给出一个样例,大家看看有什么办法能够解决它吧. <html><head><title>Hello World</title> <body>Welcome to the world of regexp!&l

Shell脚本学习笔记-函数

1.  基本的脚本函数 1.1 函数的定义 function name { commands } 或者 name() { commands } 1.2 简单示例 #!/bin/sh function Func01 { echo "This is function of Func01" } Func02() { echo "This is function of Func02" } Func01 Func02 运行结果: 1.3 函数返回值与退出码 #!/bin/sh

shell脚本学习笔记

1.判断符号:中括号[ ] [ ]进行数据的判断,例如我想知道HOME这个变量是否为空,[ -z "$HOME" ],或者两个字符串是否相等,[ "$HOME"  ==  "$MALI" ].由于中括号使用的地方有很多,所以在bash中作为判断式时,中括号的两端需要有空格来分隔.在使用中需要注意: 在中括号内的每个组件都需要有空格键来分隔 在中括号内的变量,最好以双引号括号起来,例如"$HOME" 在中括号内的常量,最好以单或

shell脚本学习笔记之sed命令用法

sed基本用法 sed:stream editor 行编辑器 sed:模式空间 将匹配的文本内容储存到模式空间中 默认不编辑原文件,仅对模式空间中的数据做处理,而后,处理结束后,架构模式空间的内容显示 sed -n -i:直接修改原文件 -e script -e script:可以同时执行多个脚本 -f file sed -f /scripts  file -r:表示使用扩展正则表达式 sed 'adresscommand' file... -n:静默模式,不再默认显示模式空间中的内容,即只显示