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

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#利用字节单位去对比
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值