Linux运维实例 shell脚本中运用正则表达式来精确匹配
文章目录前言一、正则表达式的命令格式sort命令unip命令tr命令二、使用步骤1.引入库2.读入数据总结前言正则表达式是通过一些特殊字符的排序,用以删除、查找、替换一行或者多行文字字符串的程序一、正则表达式的命令格式sort命令以行为单位对文件内容进行排序,也可以根据不同的数据类型来排序常用格式为:sort [选项] 参数也可以结合命令来使用cat file | sort 选项常用选项-f 忽略
前言
正则表达式是通过一些特殊字符的排序,用以删除、查找、替换一行或者多行文字字符串的程序
一、正则表达式的命令格式
sort命令
以行为单位对文件内容进行排序,也可以根据不同的数据类型来排序
常用格式为:
sort [选项] 参数
也可以结合命令来使用
cat file | sort 选项
常用选项
-f 忽略大小写,默认会将大写字母排在前面
-b 忽略每行前面的空格
-n 按照数字排序
-r 反向排序
-u 等同于uniq,表示相同的数据仅显示一行
-t 指定字段分隔符,默认使用[tab]键分隔
-k 指定排序字段
-o <输出文件>:将排序后的结果转存至指定文件
结合cat对文件按照数字排序
对passwd文件中的2字段按顺序进行排序。通过:分隔符来匹配
unip命令
用于报告或者忽略文件中的连续的重复行,常与sort一起用
格式
unip [选项] 参数
cat file | unip 选项
常用选项有
-c 计数 并删除文件中重复出现的行
-d 仅显示连续的重复行
-u 仅显示出现一次的行
结合sort来对文件按数字排序并进行计数和删除重复出现的行
tr命令
用于来对来自标准输入的字符进行替换 压缩和删除
格式
tr [选项] [参数]
常用选项有:
-c 保留字符集1的字符,其他的字符(包括换行符\n)用字符集2替换
-d 删除所有属于字符集1的字符
-s 将重复出现的字符串压缩为一个字符串;用字符集2 替换 字符集1
-t 字符集2 替换 字符集1,不加选项同结果。
字符集1 指定要转换或删除的原字符集。当执行转换操作时,必须使用参数"字符集2"指定转换的目标字符集。但执行删除操作时,不需要参数"字符集2";
字符集2:指定要转换成的目标字符集。
字符集的替换 将第二个字符集替换成0 并且换行输出 保留第一个字符集
小写替换成大写
删除字符中的字符
删除字符中重复的字符
删除文本中的空行
cut
显示行中的指定部分,删除文件中指定字段
格式为
cut 选项 参数
常用选项
-f 通过指定哪一个字段进行提取。cut命令使用"TAB"作为默认的字段分隔符。
-d "TAB"是默认的分隔符,使用此选项可以更改为其他的分隔符。
–complement :此选项用于排除所指定的字符。
–ourput-delimiter :更改输出内容的分隔符。
匹配passwd文件的第一个字段
排除第2个字段
二、数组排序
利用正则表达式来进行数组排序
三 基础正则和拓展正则
基础正则表达式常见元字符 (支持的工具grep egrep sed awk)
\ 转义字符 用于取消特殊符号的含义,比如 ! \n $
^ 匹配字符串开始的位置 比如 ^a ^l
$ 匹配字符串结尾的位置 比如 aaooKaTeX parse error: Expected group after '^' at position 3: , ^̲匹配空行
.匹配除\n之外的任意的一个字符,例如 si.s t…o
:匹配前面子表达式0次或者多次,例如 sis job*s
[list] : 匹配list列表中的字符,例如[a-z] [0-9]
[^list] 匹配任意非list列表中的一个字符,例如 [^0-9] [^a-z0-0] [^a-z]
{n}:匹配前面的子表达式n次,例如 go{2,}d ‘[0-9]{2}’ 匹配两位数字
{n,} :匹配前面的子表达式不少于n次, mm{2,}d '[0-9]{2,}'匹配两位以及两位以上的数字
{n,m} :匹配前面的子表达式n到m次,例 go{2,3}d, '[0-9]{2,3}'匹配两位到三位数字
匹配列表 列表里面每个数字只可以被匹配一次。
拓展正则表达式元字符 (egrep awk)
- :匹配前面子表达式1次以上,例 12+3,将匹配至少一个2 比如1223 12223 122223 等
?:匹配前面子表达式0次或者1次,例:12?3,将匹配13 123
()将括号中的字符串作为一个整体,例 1(123)+4 将匹配123整体一次,
| :以或的方式匹配字符串,例 :1(12|34)5, 将匹配1125和1345
更多推荐
所有评论(0)