shell脚本编程-正则表达式

shell脚本编程-正则表达式

上午知识点:
	exoect 预期交互
	expect <<  EOF
	spawn  执行的交互命令
	expect "命令的提示关键字" { send "要发送的命令 \r"}
	...
	expect "#" { send "exit \r" }
	EOF
变量的默认值:
	var=${ var:-word}

正则表达式:
	通配符: *   ?   [ ]   ^
	*.txt       	    以.txt结尾
	a??.txt  	    以。txt结尾的两个字符名的文件
	[0-9]  [a-z] [A-Z] [a-Z]  [1,2]
	[^0-9]  和  [!0-9]  //取反,非数字
	
	*5?  :  倒数第二位第5的
	{[abc],*.txt}  :  匹配a 和b 和c 和以.txt  结尾
	
基本正则表:
^          :  表示匹配行首
$           :  匹配行尾
[ ]          :    集合、匹配集合中任意的单个字符
[^]        :     对集合进行取反
.            :  匹配任意单个字符
*           :  匹配前一个字符任意次数,*号不能单独使用
\{n,m\}  :    匹配前一个字符n到m次
\{n\}      :    匹配前一个字符n次
\{n,\}     :    匹配前一个字符n次以上
\(\)        :    保留

拓展正则表:
+        :最少匹配一次 1-∞ 
?       :最多匹配一次 0-1 包含没有的情况
{n,m}  :   匹配n到m次
()    :组合为整体,保留
|          :或者
\b       :   单词边界

grep查询匹配的行,
egrep检索文本行:
echo -e

测试文件: /etc/passwd
1.输出以“r”开头的行:
# grep ‘^r’ /etc/passwd
2.输出以“nologin”结尾的行:
# grep ‘/bin/bash$’ /etc/passwd
3.组合多个条件,查找以root开头的行或者以用户名开头的行
# egrep ‘root|whn’ /etc/passwd
# grep -E ‘root|whn’ /etc/passwd
# grep ‘root|whn’ /etc/passwd
grep中的选项:
-q :表示静默,只检索不输出
-c:可输出匹配到的行数

4.输出/etc/passwd中非空行
# efrep ‘.’ /etc/passwd
# egrep -v ‘^$’ /etc/passwd

测试文件:/etc/rc.local
5.输出包括f、ff、…的行,输出f至少出现一次
# egrep ‘f+’ /etc/rc.local

6.输出包含init、initial的行 ?
# egrep init(ial)? /etc/rc.local

7.输出包含stu、stuff、…的行
# egrep stuf* /etc/rc.local

8.输出所有行 .* 包含空行

9.输出以r开头,并且以nologin结尾的行,中间可以是任意字符
# egrep ‘^r.*nologin$’ /etc/passwd

10.输出ababab ab连续出现了四次 ‘(ab){4}’

11.输出abc、abd : ‘ab[cd]’

12.输出包括以hh结尾的单词的行 ‘hh\b’ 或者 ‘hh>’ ‘\hh>’ ‘\hh\b’
niha ma asdhh aha wohenhao

匹配符MAC地址:
以冒号分割一共6位。是一个16进制: 00:50:C0:C5:R2:C5
’ [0-9A-F]{2}: [0-9A-F]{2}: [0-9A-F]{2}: [0-9A-F]{2}: [0-9A-F]{2}:’


版权声明:本文为Dzixiaobai原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。