linux 命令系列之 正则表达式和通配符(53)
来源:互联网 发布:吴知力图片 编辑:程序博客网 时间:2024/05/16 05:23
1.正则和通配符的区别
正则表达式是用来在文件中匹配符合条件的字符串,增值是包含匹配。grep,awk,sed等命令都支持正则表达式
通配符是匹配符合条件的文件名,通配符是完全匹配,ls,find,cp 不支持正则表达式,只能使用shell自己的通配符来进行匹配
2.基础正则表达式
元字符 作用
* 前一个字符匹配0或任意多次
. 匹配除换行符外的任意一个字符
^ 匹配行首,例如:^hello会匹配以hello开头的行
$ 匹配行尾,例如:hello$会匹配以hello结尾的行
[] 匹配中括号中任意一个字符,只匹配一个。例如:[0-9]匹配任意一个数字,[a-z],[0-9]匹配一个小写的字母和一个数字
[^] 匹配大括号以外的任意一个字符。例如:[^0-9]匹配非数字
\ 转义符。用于取消特殊符号的意义
\{n\} 表示前面的数字恰好出现n次,例如:[0-9]\{4\}匹配4位数数字,[1][3-8][0-9]\{9\n}
\{n,\} 表示其前面的字符出现不小于n次,例如:[0-9]\{2,\}表示两位数及两位数以上
\{n,m\} 表示其前面的字符只是出现n次,最多出现m次,例如:[a-z]\{6,8\}匹配6到8的小写字母
"*" 匹配0或多个字符
grep "a*" test.txt ////匹配所有内容,包括空白行
grep "aa*" test.txt////匹配至少包含一个a的行
grep "aaa*" test.txt/////匹配连续2个a的字符串
grep "aaaaa*" text.txt ////匹配连续4个a的字符串
"."匹配一个字符
grep "s..d" test.txt //// 匹配在s和d两个字母之间一定有两个字符的单词
grep "s.*d" test.txt ///// 匹配s和d字母之间有任意字符
grep ".*" test.txt //// 匹配所有内容
"^" 匹配行首,"$"匹配行尾
grep "^M" test.txt ////匹配以M开头的行
grep "n$" test.txt ////匹配以n结尾的行
grep -n "^$" test.txt /////匹配空白行,输出行号
"[]"匹配中括号中间的任意一个字符,只匹配一个
grep "s[ao]id" test.txt ////匹配 said 或soid
grep "[0-9]" test.txt ///匹配任意一个数字
grep "^[a-z]" test.txt ///// 匹配以小写字符开头的行
"[^]"匹配除中括号的字符以外的任意一个字符
grep "^[^a-z]" test.txt //////不以小写字符开头的行
grep "^[^a-zA-Z]" test.txt /////不以字母开头的行
"\" 转义符
grep "\.$" test.txt ////匹配以.结尾的行
"\{n\}" 表示其前面的字符恰好出现n次
grep "a\{3\}" test.txt /////匹配a字母连续出现3次的字符串
grep "[0-9]\{3\}" test.txt ///匹配连续出现3个数字的字符串
"\{n,\}"前面的字符出现次数不小于n
grep "^[0-9]\{n,\}[a-z]" test.txt 匹配至少以3个数字开头的字符串
"\{n,m\}"匹配其前面的字符至少出现n次,最多出现m次
grep "sa\{1,3\}i" test.txt ////匹配字母s和i之间最少一个a,最多三个a
正则表达式是用来在文件中匹配符合条件的字符串,增值是包含匹配。grep,awk,sed等命令都支持正则表达式
通配符是匹配符合条件的文件名,通配符是完全匹配,ls,find,cp 不支持正则表达式,只能使用shell自己的通配符来进行匹配
2.基础正则表达式
元字符 作用
* 前一个字符匹配0或任意多次
. 匹配除换行符外的任意一个字符
^ 匹配行首,例如:^hello会匹配以hello开头的行
$ 匹配行尾,例如:hello$会匹配以hello结尾的行
[] 匹配中括号中任意一个字符,只匹配一个。例如:[0-9]匹配任意一个数字,[a-z],[0-9]匹配一个小写的字母和一个数字
[^] 匹配大括号以外的任意一个字符。例如:[^0-9]匹配非数字
\ 转义符。用于取消特殊符号的意义
\{n\} 表示前面的数字恰好出现n次,例如:[0-9]\{4\}匹配4位数数字,[1][3-8][0-9]\{9\n}
\{n,\} 表示其前面的字符出现不小于n次,例如:[0-9]\{2,\}表示两位数及两位数以上
\{n,m\} 表示其前面的字符只是出现n次,最多出现m次,例如:[a-z]\{6,8\}匹配6到8的小写字母
"*" 匹配0或多个字符
grep "a*" test.txt ////匹配所有内容,包括空白行
grep "aa*" test.txt////匹配至少包含一个a的行
grep "aaa*" test.txt/////匹配连续2个a的字符串
grep "aaaaa*" text.txt ////匹配连续4个a的字符串
"."匹配一个字符
grep "s..d" test.txt //// 匹配在s和d两个字母之间一定有两个字符的单词
grep "s.*d" test.txt ///// 匹配s和d字母之间有任意字符
grep ".*" test.txt //// 匹配所有内容
"^" 匹配行首,"$"匹配行尾
grep "^M" test.txt ////匹配以M开头的行
grep "n$" test.txt ////匹配以n结尾的行
grep -n "^$" test.txt /////匹配空白行,输出行号
"[]"匹配中括号中间的任意一个字符,只匹配一个
grep "s[ao]id" test.txt ////匹配 said 或soid
grep "[0-9]" test.txt ///匹配任意一个数字
grep "^[a-z]" test.txt ///// 匹配以小写字符开头的行
"[^]"匹配除中括号的字符以外的任意一个字符
grep "^[^a-z]" test.txt //////不以小写字符开头的行
grep "^[^a-zA-Z]" test.txt /////不以字母开头的行
"\" 转义符
grep "\.$" test.txt ////匹配以.结尾的行
"\{n\}" 表示其前面的字符恰好出现n次
grep "a\{3\}" test.txt /////匹配a字母连续出现3次的字符串
grep "[0-9]\{3\}" test.txt ///匹配连续出现3个数字的字符串
"\{n,\}"前面的字符出现次数不小于n
grep "^[0-9]\{n,\}[a-z]" test.txt 匹配至少以3个数字开头的字符串
"\{n,m\}"匹配其前面的字符至少出现n次,最多出现m次
grep "sa\{1,3\}i" test.txt ////匹配字母s和i之间最少一个a,最多三个a
0 0
- linux 命令系列之 正则表达式和通配符(53)
- linux之通配符和正则表达式
- linux通配符和正则表达式
- linux通配符和正则表达式
- linux 正则表达式和通配符
- linux初学习之正则表达式和通配符
- linux初学习之正则表达式和通配符
- linux shell通配符和正则表达式
- Linux正则表达式和通配符的区别
- linux中的正则表达式和通配符
- Linux正则表达式-通配符
- linux 命令系列之 Linux常见的通配符和特殊符号(45)
- 通配符和正则表达式
- 正则表达式 和 通配符
- 通配符和正则表达式
- 正则表达式和通配符
- 通配符和正则表达式
- 通配符和正则表达式
- scanf() 一个神奇的函数
- 主机如何访问运行在虚拟机中的Django项目
- #1142 : 三分·三分求极值
- 摩尔斯码学习进度报告
- 高仿微信多图选择
- linux 命令系列之 正则表达式和通配符(53)
- 【1】java自定义排序
- UBOOT-1.1.6.错误集合
- lucene学习之多样化查询
- 目前状态
- 安卓学习第十五天:map和hashmap,equals()方法,toString()方法
- LA3644 X-Plosives
- 我理解的单反,单电和微单间的区别
- [ZJOI2008]骑士解题报告