Shell 正则表达式和编辑文本处理器

目录

一、正则表达式

1.1 正则表达式的定义

1.2 正则表达式的分类

1.2.1 基础正则表达式的元字符

 1.2.2 扩展正则表达式

二、拓展小工具

2.1 cut 命令

2.2 sort 命令

2.3 uniq 命令

2.4 tr 命令

总结


一、正则表达式

1.1 正则表达式的定义

正则表达式,在代码中通常简写为regex、regexp。正则表达式通常被用来检索或者替换某个模式的文本,在linux中不同的程序可能会去使用到不同的正则表达式,如:grep sed awk

1.2 正则表达式的分类

Linux中常用的有两种正则表达式:

①基础正则表达式:BRE

②扩展正则表达式:ERE

1.2.1 基础正则表达式的元字符

元字符功能
\转义字符,把特殊字符转化为普通字符
^

匹配字符串开始的位置        

$匹配字符串结束的位置
.匹配一个任意的字符
*匹配一个或多个任意字符
【】

匹配【】内的字符, re【a|q】

【^】匹配【】里以什么为开头的字符,【^a-z】
\{n\}匹配前面的字符n次
\{n,\}

匹配前面的字不少于n次

\{n,m\}匹配前面文字n到m次

①grep命令使用正则表达式来搜索文本

格式:grep 【选项】 【条件】 查找的文件

常用选项:

-E: 解释PATTERN作为扩展正则表达式,也就相当于使用egrep。 或操作

-i :  搜索时候忽略大小写

-v:  反转匹配,选择没有被匹配到的内容。

-w:匹配整词,精确地单词,单词的两边必须是非字符符号(即不能是字母数字或下划线)

-n : 显示行数

-c:打印匹配文本行次数

例如:

不显示含有root的行(-v)

 显示以root开头的行

显示以bash结尾的行

grep ‘ o\{1,\}’

 显示行号和不区分大小写

 ‘sh【oi】rt’  显示出sh后带有i或者o的

【^w】oo 显示oo前面不是以w为开头的

查找含有数字的行数及内容

 

查找以字母开头的行号和内容

 ..和*的区别

 1.2.2 扩展正则表达式

扩展正则表达式,需要使用到egrep或者awk的命令。

常用的扩展元字符:

元字符功能
+

匹配前面一次以上;

go+d,匹配至少一个o

匹配前面一次或零次;

go?d/将会匹配到gd或god

|

表示或者的意思

good | read  匹配到good或者read

r(ea| oo)d 将会匹配到 read或者rood

()

在括号内的字符当作一个整体

(wes)就把wes作为一个整体

()+

匹配括号内整体一次或者多次以上

(food)+ 就会匹配出一个food或者多个food

例如:

匹配一个或多个

 过滤掉空行或者以#开头的内容

二、拓展小工具

2.1 cut 命令

cut 截取工具

常用选项:

-b 按字节截取

-c 按字符截取(中文)

-d 指定以什么作为分隔符

-f  截取出以什么分区的第几个区域,通常与-f一起用

 例如:截取以:为分区的第七个分区

截取出以:为分割的第1列和第7列

 

2.2 sort 命令

sort 将一个文件内容进行排序

常用选项

-t  以什么为分隔符

-k 指定分割后的排序区域

-n 按照数字进行排序(默认为文字)

-r 反向排序(倒序)

-o  将排序后的内容指定发送到某个文件里

-f 忽略大小写

-b 忽略每行前的空格

 例:

把passwd的文件按照字母顺序进行排序

以:为分割符,按照数字大小去排序第三区

 

以:为分割符第四区域按数字排序并输入到一个文件中

 

2.3 uniq 命令

uniq 主要用于去除重复行

常用选项

-c 对重复的行数进行计数

-d 仅显示重复行

-u 仅显示出现一次的行

例:

对重复行计数

 

显示重复的行

 

显示出现一次的行

 

查看登录过系统的用户

 

2.4 tr 命令

tr 可以用一个字符去替换另一个字符,常用对于字符进行替换、压缩和删除

常用选项:

-d 删除字符

-s 删除所有的字符只保留一个字符

 例:

把ni替换成wo

把文件所有小写调成大写

 

把n字符删除

 

只保留一个n

 

总结

1. 正则表达式分为:基础正则表达式和扩展正则表达式

2.cut(截取)、uniq(去重)、tr(替换)、sort(排序)的小工具 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值