Linux学习笔记(7)正则表达式

本文详细介绍了正则表达式的使用方法,包括基本语法、grep与sed工具的应用,以及扩展正则表达式的特点。同时,文章还讲解了awk数据处理工具、diff和cmp文件对比工具的使用技巧。

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

Regular Expression
正则表达式
是处理字符串的方法,以行为单位进行字符串的处理操作,通过一些特殊付好的辅助可以轻易的完成查找删除操作。
语系的问题 LANG=C语系,不同语系的语法规则不一样,需要特别注意。

1.正则表达式与grep

[:alnum:]//代表英文大小写字符和数字0-9 a-z A-Z
[:alpha:]//代表任何英文字母大小写 a-z A-Z
[:blank:]//代表空格和TAB
[:cntrl:]//键盘上的控制键ctrl tab等
[:digit:]//代表数字 0-9
[:graph:]//除了空格以外的所有按键
[:lower:]//代表小写字母
[:print:]//代表任何可以被打印出来的字符
[:punct:]//代表标点符号"!'?;:#$"
[:upper:]//代表大写字母
[:space:]//代表会产生空白的字符
[:xdigit:]//16进制数字及字符

1.查找特定字符串

grep -n 'the' regular_express.txt//-n 是显示行号 关键词自动高亮 
//-i忽略大小写 -v反向选择 即不含the的

在这里插入图片描述

2.利用中括号[]查找

grep -n 't[ae]st' regular_express.txt

在这里插入图片描述
不管中括号中有几个字符都只代表了一个字符

grep -n '[^g]oo' regular_express#[^g]反向选择 不想要g开头的出现 
#一定要记得制表符是在中括号里面

在这里插入图片描述

grep -n '^[a-z]oo' regular_express#可用^[]来反向选择

在这里插入图片描述
也可以使用如下代码

grep -n '[^[:lower:]] regular_express#相当于递归即就是[^a-z]

3.行首与行尾字符

grep -n '^the' regular_express#''中加制表符表示希望查找关键词
#在句首出现的句子

在这里插入图片描述

4.任意字符. 和 重复字符’*’

grep -n 'g..d' regular_express#..可以代替任何字符

在这里插入图片描述

grep -n 'oo*' regular_express #*意味重复0个或一个以上的o字符 
#因此o*意为 拥有空字符或一个以上的o
#oo*拥有至少一个o
#ooo*拥有至少两个o 

在这里插入图片描述

5.限定连续字符数量的{}

grep -n 'go\{2,5\}g' regular_express#用\来无效化{}

在这里插入图片描述

2.sed工具

sed也是管道命令

sed [-nefr]	[n1,n2 function] [文本文件]
-n #安静模式 在一般语法中会全部输出到屏幕上 但安静模式下只有被处理
#的那一行才会输出
nl regular_express |sed '2,5d'#删除2-5行 并把删除后的文件打印在屏幕上
function
a#新增 a后可以接字符 并插入到下一行
sed '2a drink tea' regular_express#这行字插入到第三行
sed '2a drink tea\
drink bear'#多行插入的方法
c#替换 c后接字符替换n1 n2中间的行
d#删除
i#插入 i后接字符 插入到上一行
p#打印 将某个选择的参数打印出来
s#替换 

3.扩展正则表达式

+ #意义:一个或一个以上的前一个字符
egrep -n 'go+d' regular_express#o+代表一个以上的o


? #意义:零个或一个的前一个字符
egrep -n 'go?d' regular_express#代表空的或一个o


| #用或or的方式找出数个字符串
egrep -n 'gd|good' regular_express#找gd和good
egrep -n 'gd|good|dog' regular_express#找gd和good和dog

()#找出群组字符串
egrep -n 'g(la|oo)d' regular_express

4.文件的格式化和相关处理

1.awk数据处理工具

awk的后续操作都是以单引号括住的,需要用print打印时,非变量部分需要用双引号括住。(print默认输出完换行,printf为输出后不换行)

awk '条件类型1{操作1} 条件类型2{操作2} ...' filename

在这里插入图片描述
取出后五条登录信息,用管道传输给awk,在屏幕上打印第一个变量和第三个变量,中间以一个tab间隔。
在这里插入图片描述

NF #每一行拥有的字段总数
NR #目前awk所处理的是第几行数据
FS #目前的分隔字符

2.diff和cmp文件对比

diff [-bBi] from-file to-file
from-file #文件名,作为原始文件
to-file #目标文件
-b#忽略一行中多个空白的差异
-B#忽略空白行的差异
-i#忽略大小写差异


cmp#利用字节单位去对比
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值