欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

shell脚本编程-正则表达式.txt

程序员文章站 2022-03-05 13:11:21
...

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]]:::::