@[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:先删除第一字符集较第二字符集多出的字符,再做替换(有三种情况)
##若第一字符集比第二字符集多,从头覆盖;
若第一字符集和第二字符集等量,则全部覆盖替换;
若第二字符集比第一字符集多,则只覆盖和第一字符集长度一样的第二字符集内容