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

正则表达式的作用:主要做模糊匹配

正则与通配符的区别:

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\}" #匹配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 #只统计字符数

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...