linux——文本处理——正则表达式

本文详细探讨了Linux系统中正则表达式的优势及其在文本处理中的应用,通过实例解析了如何利用正则表达式解决实际问题,如匹配用户名和UID、查找特定模式的行、统计IP登录次数等,最后进行了使用总结。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、正则表达式的好处

简单的符号结合达到对文本的多重过滤
灵活性、逻辑性和功能性非常的强
每一项功能单列出来较为简单,但组合时往往难以表达并找清逻辑

二、使用时,连线解决,一环套一环

这里写图片描述

三、奇葩组合

  .*  表示任意长度任意字符。
  ^$ 空行  ^[[:space:]] 空白行   

四、操作分析

1、显示CentOS7上所有系统用户的用户名和UID

a.显示系统用户的话,用uid在0-999之间,为了避免其他信息干扰,先将/etc/passwd中用户名和UID取出。
b.筛选出uid仅有0-999数字的行(避免有用户名是数字1-999之间的)
c.uid仅有0-999数字的行有两种表示方法

方法1

方法2

2、添加用户bash、testbash、basher、sh、nologin(其shell 为/sbin/nologin),找出/etc/passwd用户名同shell名的行

a.新建用户
b.以字符串"string"开头,且以"/string"结尾的行,必须要用引用。引用string时要在string外加(),否则引用\1时,系统不能识别引用的字符串。

这里写图片描述

3.找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行

a.单词包括下划线开头: ^[[:alpha:]|_]\+  

这里写图片描述

4.使用egrep取出/etc/rc.d/init.d/functions中其基名

a.基名是路径的最后一个单词
b.取出一行中的一部分,并不是取出一整行,需要用 grep -o

这里写图片描述

5、使用egrep取出/etc/rc.d/init.d/functions路径的目录名

a.目录名是路径最后一个单词之前的;
b.从 开头的 / 到 最后一个 /。

这里写图片描述

6、统计last命令中以root登录的每个主机IP地址登录次数
这里写图片描述
7、利用扩展正则表达式分别表示0-9、10-99、100-199、200-249、250-255。

a.创建一个文件digit作为实验。
b.0-9

这里写图片描述

c.10-99

这里写图片描述

d.100-199

这里写图片描述

e.200-249

这里写图片描述

f.250-255

这里写图片描述

8、显示ifconfig命令结果中所有IPv4地址

 a.ip地址的行有关键词broadcast
 b.cut截取 ip地址

这里写图片描述

9、将此字符串:welcome to magedu linux 中的每个字符去重并排序,重复次数多的排到前面

  a. 如果要对这句话中的字符操作,需要把字符单列出来成一行;因为uniq和sort都是对行进行操作的。
  b.暂时只能采用 grep的-o 选项(单独只显示匹配到的信息,并不显示整行)的 特有功能。
  c.排序、去重。

这里写图片描述

五、使用总结:

 1.尽量在外面加上双引号 ""。
 2.忘了该不该加 \ 时,就全加上。
 3.使用时,先不加 \ ,以免影响判断;想好逻辑之后再加上 \ ,测试结果。
 4.正则表达式属于模糊查找,会将只要含有关键字的行都列出来,用\<keyword\> 限定关键字范围可以避免。
 5.必须明确表达出引用、分界、开头、结尾;否则就会多了好多你不想要的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值