Shell——正则表达式

@[shell正则表达式]

1.正则表达式简介

使用字符串来描述、匹配一系列符合某个规则的字符串

1.1分类

1.基础正则表达式
2.扩展正则表达式

1.2组成

 普通字符:大小写字母、数字、标点符号及一些其他符号
元字符:在正则表达式中具有特殊意义的专用字符

2.基础正则表达式

2.1工具

grep、sed

2.2基础正则表达式元字符

\:转义字符,使具有特殊意义的元字符作为普通字符使用
^:匹配字符串开始的位置
$ :匹配字符串结束的位置
**.**:匹配除\n之外的任意的一个字符,例如:go.d、g…d
<body>*</body>:匹配前面子表达式0次或者多次,例如:goo*d、go.*d
<br>[list]:匹配list列表中的一个字符<br>
<body>[^list]</body>:匹配任意不在list列表中的一个字符
<br>\{n}:匹配前面的子表达式最少n次
<br>{n,}:匹配前面的子表达式最少n次,最多无上限
<br>{n,m}:匹配前面的子表达式最少n次,最大m次

2.3 grep

grep 【选项】 参数
选项:
-n:显示行号
-i:不区分大小写
-v:反向过滤(即查找不符合参数条件的)

2.4 sed

2.4.1 sed操作原理

1.读取:从输入流读取内容临时放入缓存区
2.执行:在模式空间顺序执行命令
3.显示:发送修改后的内容到输出流,发送后,模式空间被清空
默认sed命令都在模式空间内执行,因此输入流的文件内容不会被改变,除非是重定向存储输出

2.4.2 sed用法

sed 【选项】 '操作' 参数

选项:
-e script:指定sed编辑命令(script:命令)
-f scriptfile :指定的文件是sed编辑命令(scriptfile:命令文件)
-n、--quiet、silent:表示仅显示处理后的结果
-i:直接编辑文本文件(即会改变输入流文件内容)

操作:
a:增加,在当前行下面增加一行指定内容
 i:增加:在当前行上面增加一行指定内容
c:替换,将选定行替换为指定内容
s:替换,将选定字符替换为指定字符
y:字符转换
d:删除,删除指定行
H:复制,复制到剪贴板
g:粘贴覆盖,将剪贴板内容覆盖到指定行
G:粘贴追加,将剪贴板内容追加到指定行后
p:打印,如果同时指定行,表示打印指定行,若不指定行,打印所有内容,若有非打印字符,以ASCII码输出,通常与-n选项一起使用
w:保存为文件(即将操作结果另存为)
r:读取指定文件

3.扩展正则表达式

3.1工具

egrep、awk

3.2扩展正则表达式元字符

+:匹配前面子表达式1次以上
 ?:匹配前面子表达式0次或1次
():将括号内容看做一个整体
|:以或方式匹配字符串

3.3 awk

用于无交互情况实现复杂操作,通常为系统取值、取值、匹配参数

3.3.1 awk工作原理

逐行读取文本,默认以空格为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或条件执行编辑命令

3.3.2 awk用法

按行输出
按字段输出
通过管道符、双引号调用shell命令

①awk 【选项】 '模式或条件{编辑命令}' 文件
②awk -f 命令脚本文件 文件

选项:
-F:检索行时以什么为间隔,默认是空格(例:“-F:”即以:为间隔 )

内建变量:
FS:指定每行文本的字段分隔符,和-F选项同义
NF:当前处理的行的字段个数
NR:当前处理的行的行号
$0:当前处理的行的整行内容
$n:当前处理行的第n个字段
FILENAME:被处理的文件名
RS:数据记录分隔,默认为\n,即每行为一条记录

4.常用辅助工具

4.1 sort排序工具

依据不同数据类型进行排序
排序方式:
字符排序(默认)
数字排序

4.1.1 sort用法

sort 【选项】 参数
选项:
-f:忽略大小写
-b:忽略每行前面的空格
-M:按月份排序
-n:按数字排序
-r:反向排序
-u:等同于uniq工具,表示重复数据时仅显示一行
-t:指定分隔符,默认用TAB键分隔
-o: <输出文件>:将排序的结果保存至指定文件
-k:指定排序区域

4.2 uniq重复统计工具

筛选重复行

4.2.1 uniq用法

uniq 【选项】 【参数】
选项:
-c:进行计数,统计重复行
-d:仅显示重复行
-u:仅显示出现一次的行

4.3 tr替换工具

    替换操作

4.3.1 tr用法

tr 【选项】 【参数】
选项:
-c:取代所有不属于第一字符集的字符
-d:删除所有属于第一字符集的字符
-s:把连续重复的字符以单独一个字符表示
-t:先删除第一字符集较第二字符集多出的字符,再做替换(有三种情况)  
##若第一字符集比第二字符集多,从头覆盖;
若第一字符集和第二字符集等量,则全部覆盖替换;
若第二字符集比第一字符集多,则只覆盖和第一字符集长度一样的第二字符集内容
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值