Shell编程Shell中的正则表达式

Posted 林夕07

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell编程Shell中的正则表达式相关的知识,希望对你有一定的参考价值。

目录

Shell中的正则表达式

1、正则表达式与通配符

  • 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式。

  • 通配符用来匹配符合条件的文件名,通配符是完全匹配的。ls、find、cp这些命令不支持正则表达式,所以只能使用Shell自己的通配符来进行匹配了。

2、正则表达式规则

元字节作用
*前一个字符匹配0次或者n次
.匹配除了换行符外任意一个字符
^匹配行首,例如:^hello会匹配以hello开头的行
$匹配行尾,例如:hello$会匹配以hello结尾的行
[]匹配中括号中指定的任意一个字符,只匹配一个字符。
例如:aoeiu匹配任意一个元音字符,
[0-9]匹配任意一位数字
[a-z][0-9]匹配小写字和一位数构成的俩位字符
[^]匹配除了中括号的字符以外的任意一个字符,例如:[^0-9]匹配
任意一个为数字字符
\\转义符,用于取消将特殊符号含义取消
\\n\\表示其前面的字符出现不小于n次,
例如:[0-9]2, 表示匹配俩位数及其以上的数字
\\n,m\\表示其前面的字符至少出现n次,最多m次,
例如:[a-z]6,8匹配6到8为的小写字母

3、练习

测试的文本

3.1 匹配所有内容,包括空白行

命令:grep "a*" 文件名

效果图:

3.2 匹配行至少包含有一个a的行

命令:grep "aa*" 文件名

效果图:

3.3 匹配行至少有俩个连续的a

命令:grep "aaa*" 文件名

效果图:

3.4 匹配在s与d字符中间有俩个字符的单词的行

命令:grep "s..d" 文件名

效果图:

3.6 匹配所有内容

命令:grep ".*" 文件名

效果图:

3.7 匹配以大写M开头的行

命令:grep "^M" 文件名

效果图:

3.8 匹配以!结尾的行

命令:grep "\\!$" 文件名

效果图:

3.9 匹配所有的空行

为了方便观察 添加参数-n打印一下行号。

命令:grep "^$" 文件名

效果图:

3.10 匹配s和id中间的字母要么是a要么是o的行

命令:grep "s[ao]id" 文件名

效果图:

3.11 匹配任意一个数字的行

命令:grep "[0-9]" 文件名

效果图:

3.12 匹配用小写字母开头的行

命令:grep "^[a-z]" 文件名

效果图:

3.13 匹配没用小写字母开头的行

命令:grep "^[^a-z]" 文件名

效果图:

3.14 匹配不以字母开头的行

命令:grep "^[^a-zA-Z]" 文件名

效果图:

3.15 匹配使用 . 结束的行

命令:grep "\\.$" 文件名

效果图:

3.16 匹配a字母连续出现3次或大于3次的行

命令:grep "a\\3\\" 文件名

效果图:

3.14 匹配在字母sa和字母i直接有至少一个a,最多三个3

命令:grep "sa\\1,3\\i" 文件名

效果图:

以上是关于Shell编程Shell中的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

不以元音开头或结尾的单词的正则表达式?

Shell中的if结合正则表达式使用

Shell中的if结合正则表达式使用

SHELL正则表达式

shell中的正则表达式

shell脚本学习笔记12-正则表达式