shell编程学习笔记5--正则表达式
2018-03-08 10:17
501 查看
正则表达式的作用:主要做模糊匹配
操作文件名的命令: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 + 自带的参数
语法: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 #只统计字符数
正则与通配符的区别:
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 #只统计字符数
相关文章推荐
- shell编程学习笔记之正则表达式初识
- 【Linux学习笔记九】Shell编程-正则表达式
- MySql官方手册学习笔记2 MySql的模糊查询和正则表达式
- PHP学习笔记第【10】天(2014.11.10)——正则表达式
- 黑马程序员------java学习笔记之正则表达式
- Perl学习笔记(2)----正则表达式数字匹配的一个疏忽
- js 正则表达式学习笔记之匹配字符串
- 车东的正则表达式学习笔记
- 30分钟学习正则表达式——学习笔记
- 正则表达式学习笔记
- (转)Python爬虫学习笔记(2):Python正则表达式指南
- 正则表达式学习笔记贪婪、惰性和支配量词
- javascript学习笔记(五)正则表达式
- 正则表达式学习笔记
- java学习笔记(二十一)正则表达式
- scala学习笔记-文件和正则表达式
- iOS学习笔记39-iOS开发,谓词(NSPredicate)的用法:(二)谓词和正则表达式配合使用,进行表单内容判断
- 学习笔记-基础知识16-正则表达式
- 黑马程序员_Java正则表达式学习笔记
- 正则表达式 学习笔记2.3