shell编程,正则表达式BRE模式,ERE模式
BRE模式
特殊字符:
. * [ ] ^ $ { } \ + ? | ( )
^ 脱字符,匹配以特定字符串开头的行
例:echo "This is test" | sed -n '/^This/p'
$ 匹配特定字符串结尾的行
例:echo "This is a good book" | sed -n '/book$/p'
匹配特定开头和特定结尾的行:
sed -n '/^this is a test/p' data.txt
过滤空格行:
sed '/^$/' data.txt
. 点字符:
匹配除了换行之外的任意字符
sed '/.hello/p' data.txt 只要在hello之前有任意字符就能够匹配到
[abc]字符组:
sed '/[hc]at/p' data.txt 只匹配hat和cat的行
echo "yEs" | sed -n '/[Yy][Ee][Ss]/p'
[^abc]排除字符组:
sed -n '/[^hc]at/p' data.txt 除了包含h或c的其他任意字符,单至少要有一个字符
[a-b]区间:
sed -n '/[a-d]at/p' data.txt 匹配包含a到d之间的字母开头的行
sed -n '/[a-de-h]at/p' data.txt 多个区间,a到d或者e到h的任意字符在at前的行
sed -n '/^[0-9][0-9][0-9][0-9][0-9]$/p' data.txt 匹配邮编,5位数
特殊字符组:
[[:alpha:]] a-z A-Z
[[:alnum:]] 0-9 a-z A-Z
[[:blank:]] 空格,制表符
[[:digit:]] 0-9
[[:lower:]] a-z
[[:upper:]] A-Z
[[:print:]] 任意可打印字符
[[:punct:]] 匹配标点符号
[[:space:]] 任意空白字符,空格、制表符、NL、FF、VT、CR
例:echo "abc" | sed -n '/[[:digit:]]/p'
*星号:
表示其前面的字符可以出现0次或任意次
echo "bat" | sed -n '/b[ac]*t/p' 表示b和t之间可以出现任意次数的a或c,但不可以出现其他字符
ERE模式:
只有gawk可以使用的模式:
? 问号,表示前面的字符出现0次或1次
+ 加号,表示前面的字符出现一次或多次
{m,n} 或 {m} 表示前面的字符出现m到n次,或者固定为m次,使用此模式必须要加上--re-interval选项
例:echo "bt" | gawk --re--interval '/be{1}t/{print $0}'
| 或运算,例:echo "This is a cat" | gawk '/cat|dog/{print $0}'
( ) 表达式分组,echo "cat" | gawk '/(c|b)a(b|t)/{print $0}'
例:phone.list | ./isphone phone.list为电话列表,isphone为过滤的gawk脚本
匹配电子邮件正则表达式:
^([a-zA-Z0-9_\-\.\+]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$
- shell编程,在脚本中使用函数,局部变量,传参,返回值,递归,引入库source,shtool函数库安装使用
- shell编程,重定向错误信息和正常输出的数据,输出输入文件描述符
- linux的shell数组变量,给环境变量赋多个值
- linux的shell,which,type,history,alias,coproc后台模式,协程,子shell
- shell编程,数学运算 expr、$[ operation ]、bc计算器
- shell检查能否免秘钥
- lvs开机自启动脚本
- shell编程,将循环输出的结果重定向到文件,将文件内容输入重定向到循环
- shell编程,正则表达式BRE模式,ERE模式
- shell 删除空目录