您的位置:首页 > 运维架构 > Shell

shell编程学习笔记5--正则表达式

2018-03-08 10:17 501 查看
正则表达式的作用:主要做模糊匹配

正则与通配符的区别:

1、通配符:通配符是通配符。是匹配文件名的。是完全匹配(搜出来,没有多余的)
操作文件名的命令:ls、find、cp
- *   #匹配任意(多个)字符
- ? #匹配任意一个字符
- []  #匹配中括号的一个字符

下图,打印出来的是abc开头的(因为*放在最后了),多余的一个都没有







2、正则:通配符不要和正则的通配符搞混。是匹配文件内容的。是包含匹配(匹配一个词,列出一整行)。
操作字符串的命令grep、awk、sed



注意:双引号是定界符



案例:



案例1-1:点



案例1-2:



案例1-3:“.*” #匹配所有内容
案例2-1:“^$” #匹配空白行
案例3-1:中括号是或的关系



案例3-2:“[0-9]”   #匹配任意一个数字
案例3-3:“^[a-z]” #匹配小写字母开头的行
案例3-4:中括号内有^是取反(匹配中括号字符以后的任意一个字符)
注意:^在外是匹配行首(开头),在内是取反
“^[^a-z]” #匹配不用小写字符开头的行
“^[^a-zA-Z]” #匹配不用字母开头的行
案例4-1:转义符,让特殊字符失效,失效后点就是点



案例5-1:“\{n\}”不带逗号是等于;花括号前要转义
“a\{3\}”#匹配a字符连续出现3次的字符串
"[0-9]\{3\}"  #匹配连续3个数字
案例5-2:“\{n,\}”带上逗号是大于;花括号前要转义
"^a[0-9]\{3,\}[a-z]" #匹配开头最少连续3个数字开头的行
案例5-3:\{n,m\}”带上逗号是小于,大于;花括号前要转义
"sa\{\1,3\}i" #匹配在s和i之间,最少有一个a,最多3个a
案例6:"[0-9]\{4\}[0-9]\{2\}[0-9]\{2\}" #匹配19920209格式的字符串
案例7:"[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" #匹配ip
注意:同样是获取文件的内容获取整行用grep + 正则;获取整列用cut + 自带的参数

字符串截取命令

1、字符截取整列
语法:cut [选项] 文件名
选项:-f 列号(去第几列的数据); -d 分隔符(按指定的分隔符截取,带引号)







2、使用printf输出命令
注意:print只在awk命令中有效,这俩的区别就是print自带换行









注意:$()是调用系统命令
3、字符截取awk命令  注意:输出要加单引'' ; 动作要用{}





因为cut不能识别df的空格分隔符,所以要用awk



条件表达式--开始和结束条件









条件表达式也可以使用关系运算符



4、字符替换命令sed
sed是个包括在所有linux平台的轻量级编辑器,主打增删改查
注意:awk的动作是加{} ; sed的动作是加单引







注意:正则[]号中是或的关系;sed 命令动作中的逗号是&&的关系









5、字符处理命令
sort 排序命令



sort /etc/passwd #对该文件进行排序(默认按照字母顺序升序)
sort -r /etc/passwd #降序排序



注意:下图不加-n 数字他也认为是字符串



6、统计命令
语法:wc [选项] 文件名
选项:-l  #只统计行数;-w #只统计单词数; -m #只统计字符数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息