正则表达式

一、基本正则表达式
正则表达式就是为了处理大量的文本|字符串而定义的一套规则和方法
它是以行为单位,一次处理一行
正则表达式应用非常广泛,存在于各种语言中,php perl grep sed awk 支持。ls * 通配符
Linux中的正则表达式,最常应用正则表达式的命令是grep(egrep),sed,awk。
正则表达式分为两种:
基本正则表达式
扩展正则表达式
grep常用基本参数和作用
参数 作用
–color 匹配到的字符串显示颜色
-i 忽略字符大小写
-o 仅显示匹配的字串
-v 反向选取, 即显示不匹配的行
-E 使用扩展正则表达式
-n 显示行号
-w 以字符串匹配
-A 后面加数字,为after的意思,除了列出该列的行外,后续的n行也列出来
-B 后面加数字,为befer的意思,除了列出该行的行外,前面的n行也列出来
在这里插入图片描述
在这里插入图片描述
测试 :
1、显示/proc/meminfo文件中以大小s开头的行(要求:使用两种方法)
grep -n “^(s|S)” /proc/mem info
在这里插入图片描述
grep -i “^s” /proc/meminfo
在这里插入图片描述
2.显示/etc/passwd文件中不以/bin/bash结尾的行
grep -v “:/bin/bash$” /etc/passwd

在这里插入图片描述
3、显示用户alice默认的shell程序
cat /etc/passwwd | cut -d: -f 1,7 | grep -w “^alice”
在这里插入图片描述
cat /etc/passwd | grep -w “^alice” | cut -d: -f 1,7
在这里插入图片描述
4、找出/etc/passwd中的两位或三位数
cat /etc/passwd | grep -ow “[1-9][0-9]{1,2}”
在这里插入图片描述
cat /etc/passwd | grep -ow “[0-9]{2,3}”

在这里插入图片描述
5、显示CentOS7的/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面有非空白字符的行
cat /etc/grub2.cfg | grep “^ [[:sapce:]]+ [^’ ']."
在这里插入图片描述
cat /etc/grub2.cfg | grep "^ [[:space:]] + [^ [:space:]].

在这里插入图片描述
6、找出“netstat -tan”命令结果中以LISTEN后跟任意多个空白字符结尾的netstat -tan | grep " . * [LISTEN][[:space:]]*$"
在这里插入图片描述
7、显示CentOS7上所有系统用户的用户名和UID.
cat /etc/passwd | cut -d: -f 1,3 | grep “[1-9][0-9]{,2}”
在这里插入图片描述
8、显示三个用户root、alice、summer的UID和默认shell
cat /etc/passwd | grep -w “^(root|alice|summer)” | cut -d: -f 1,3

在这里插入图片描述
cat /etc/passwd | cut -d:-f 1,3 | grep -w “^(root|alice|summer)’
在这里插入图片描述
9、找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行
cat /etc/rc.d/init.d/funtion | grep “^ ([_[:alpha:]]+()”
在这里插入图片描述
10、使用egrep取出/etc/rc.d/init.d/functions中其基名
echo /etc/rc.d/init.d/funtions | egrep -o “[^ /][/]?$"
在这里插入图片描述
注意:这里的egrep 为扩展正则,就相当于 grep -E 作用是完成基本正则做不了的事
11、使用egrep取出上面路径的目录名
echo /etc/rc.d/init.d/funtions | egrep -o ".
[/]<”
在这里插入图片描述
.[/]表示从后往前匹配,匹配出/前有字符串的字符
echo /etc/rc.d/init.d/funtions | egrep -o "<.
[/]”
在这里插入图片描述
因为< 后面跟字符串,表示以字符串为首向后匹配,所以<.[/] 匹配以.[/]为首向后匹配
12、显示ifconfig命令结果中所有IPv4地址
ifconfig |grep -owE “((([0-9]{1,2})|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-9]
{1,2})|(1[0-9]{,2})|(2[0-4][0-9])|(25[0-5])){1}[[:space:]]”
在这里插入图片描述
13、 找出ifconfig命令结果中的1-255之间的数字
ifconfig |grep -owE “([1-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5])”
在这里插入图片描述
练习:
请在test上完成以下题目

  1. 取得所有 the 字符相关信息及行号
    cat /root/test | grep -wn “the”
    在这里插入图片描述
  2. 取得无 the 字符相关信息及行号
    cat /root/test | grep -vwn “the”
    在这里插入图片描述
  3. 取得 test 或 taste 这两个单字相关信息及行号
    cat /root/test |grep -ow “(test\ |taste)”
    在这里插入图片描述
    在这里插入图片描述
  4. 取得所有 oo 字符相关信息及行号
    cat /root/test | grep -n “oo”
    在这里插入图片描述
  5. 不想取 oo 前面有 g 的字符相关信息及行号
    cat /root/test |grep -n “oo” |grep -v “goo”
    在这里插入图片描述 6. oo 前面不想要有小写的字符相关信息及行号
    cat /root/test | grep -vn “[a-z]oo”
    在这里插入图片描述
  6. 取得 the 只在行首相关信息及行号
    cat /root/test |grep -n “^the” 在这里插入图片描述
  7. 取得有 数字 相关信息及行号
    cat /root/test | grep -n “[0-9]”
    cat /toot/test |grep -n " [[:digit:]]"
    在这里插入图片描述
  8. 取得开头是小写 相关信息及行号
    cat /root/test |grep -n “^ [a-z]”
    cat /root/test | grep -n “^ [[:lower:]]”
    在这里插入图片描述
  9. 不想要开头是英文字母 相关信息及行号
    cat /root/test |grep -nv “^ [ [:alpha:]]”
    在这里插入图片描述
    cat /root/test |grep -nv “^ [a-z] [A-Z]”
    在这里插入图片描述
  10. 取得行尾结束为小数点. 相关信息及行号
    cat /root/test |grep -n “\ .$”
    在这里插入图片描述
  11. 取得空白行 相关信息及行号
    cat /root/test |grep -n “^ $”
    在这里插入图片描述13. 取得g??d 的字符相关信息及行号
    cat /root/test |grep -n “g…d”
    在这里插入图片描述
  12. 取得至少两个 o 以上的字符相关信息及行号
    cat /root/test |grep -n “ooo*”
    在这里插入图片描述
  13. 取得开头与结尾都是 g ,两个g 之间仅能存在至少一个 o 相关信息及行号
    cat /root/test |grep -n “go*g”
    在这里插入图片描述
  14. 取得g 开头与 g 结尾的字符,当中的字符可有可无 相关信息及行号
    cat /root/test |grep -n "g.*g’
    在这里插入图片描述
  15. 取得两个连续 o 的字符相关信息及行号
    cat /root/test | grep -n “oo”
    在这里插入图片描述
  16. 取得g 后面连接2到5个 o,然后再接一个 g 的字符相关信息及行号
    cat /root/test |grep -n “go\ {2,5\ }g”
    在这里插入图片描述
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值