8.1Shell编程-正则表达式——linux

tech2024-01-10  79

一、 基础正则表达式

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

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

2. 基础正则表达式 范例: 1. “*”前一个字符匹配0次或任意次 [rootlocalhost ~]# grep “a*” 文件名 匹配所有内容包括空白行

[rootlocalhost ~]# grep “aa*” 文件名 匹配至少含有一个a的行

[rootlocalhost ~]# grep “aaa*” 文件名 匹配最少含有2个连续a的字符串

[rootlocalhost ~]# grep “aaaaa*” 文件名 匹配最少含有4个连续a的字符串

2. “.”匹配除了换行符外任意一个字符 [rootlocalhost ~]# grep “s…d” 文件名 匹配在s和d之间一定有两个字符的单词

[rootlocalhost ~]# grep “s.*d” 文件名 匹配在shed之间有任意字符的行

[rootlocalhost ~]# grep “.*” 文件名 匹配所有内容

3. “^”匹配行首,”$“匹配行尾 [rootlocalhost ~]# grep “^M” 文件名 匹配以M开头的行

[rootlocalhost ~]# grep “s$” 文件名 匹配以s结尾的行

[rootlocalhost ~]# grep -n “^$” 文件名 匹配空白行 ,并列出行号

4. “[]” 匹配中括号中指定的任意一个字符。只匹配一个字符 [rootlocalhost ~]# grep “s[ao]id” 文件名 匹配s和i字母中,要不是a,要不是o的行

[rootlocalhost ~]# grep “[0-9]” 文件名 匹配任意一个数字的行

[rootlocalhost ~]# grep “1” 文件名 匹配用小写字母开头的行

[rootlocalhost ~]# grep “[a-z]” 文件名 匹配不用小写字母开头的行

[rootlocalhost ~]# grep “[a-zA-Z]” 文件名 匹配不用字母开头的行

5. “\”转义符 [rootlocalhost ~]# grep “.$” 文件名 匹配使用“.”结尾的行

6. “{n}” 表示前面的字符恰好出现n次 [rootlocalhost ~]# grep “sa{3|}” 文件名 匹配a字母连续出现3次的字符串所在的行

[rootlocalhost ~]# grep “[0-9]{3}” 文件名 匹配包含连续3个数字的字符串所在的行


a-z ↩︎

最新回复(0)