shell脚本编程-正则表达式.txt
shell脚本编程-正则表达式.txt
上午知识点:
expect 预期交互
expect << EOF
spawn 执行的交互命令
expect “命令的提示关键字”{send “要发送的命令、r”}
…
expect"#"{send “exit \r”}
EOF
变量的默认值:
var=${var:=word}
正则表达式:
通配符: * ? {} ^
*.txt
??.txt
[0-9] [a-z] [A-Z] [0-9a-Z] [1,2]
[^0-9 ] 和 [!0-9] //取反,非数字
*5? :倒数第二位第5的
{[abc],*.txt} : 匹配a 和b 和c 和以.txt结尾
[abc]: 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的行 ?
输出包含ab、abc、abd、 abr、aby、abi的行
egrep init{ial} ? /etc/ec. local
7.输出包含stu、stuf、stuff、… 的行
egrep stuf* /etc/ rc. local
8.输出所有行.*包含空行
9.输出以r开头,并且以nologin结尾的行,中间可以是人资字符
#egrep ^r.*nologin$
/etc/passwd
10.输出adadadad ad连续出现了4次 (ad){4}
11.输出abc、abd : ad[cd]
12.输出包括以hh结尾的单词的行 hh\b
: 或者 hh\>
nihao ma asdhh aha wohenhao
匹配MAC地址:
以冒号分割一共6位,是一个16进制: 00:50:C0:C5:R2:C5[0-9a-fA-F[2]][0-9a-fA-F[2]][0-9a-fA-F[2]][0-9a-fA-F[2]][0-9a-fA-F[2]]:::::
上一篇: win10关闭自动更新的方法
下一篇: 行排序命令sort