Shell基础-正则表达式
正则表达式
它用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令支持正则表达式。
而通配符用来在系统匹配符合条件的文件名,是完全匹配。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了。
它用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令支持正则表达式。
而通配符用来在系统匹配符合条件的文件名,是完全匹配。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了。
元字符 作用
* 把前一个字符匹配0次,或任意次
例子:grep "a*" hh.txt 匹配hh.txt所有内容,包括空白行
grep "aa*" hh.txt 匹配hh.txt中至少包含有一个a的行。
grep "aaa*" hh.txt 匹配hh.txt中最少包含两个连续a的行。
* 把前一个字符匹配0次,或任意次
例子:grep "a*" hh.txt 匹配hh.txt所有内容,包括空白行
grep "aa*" hh.txt 匹配hh.txt中至少包含有一个a的行。
grep "aaa*" hh.txt 匹配hh.txt中最少包含两个连续a的行。
. 匹配除换行符外任意一个字符
例子:grep "s..d" hh.txt 匹配在s和d这两个字母之间有两个字符的单词所在行
grep "s.*d" hh.txt 匹配在s和d字母之间有任意字符的字符串所在行
grep ".*" hh.txt 匹配hh.txt所有内容
例子:grep "s..d" hh.txt 匹配在s和d这两个字母之间有两个字符的单词所在行
grep "s.*d" hh.txt 匹配在s和d字母之间有任意字符的字符串所在行
grep ".*" hh.txt 匹配hh.txt所有内容
^ 匹配行首
$ 匹配行尾
例子:grep "^M" hh.txt 匹配以大写M开头的行
grep "n$" hh.txt 匹配以小写n结尾的行
grep "^$" hh.txt 匹配空白行
例子:grep "^M" hh.txt 匹配以大写M开头的行
grep "n$" hh.txt 匹配以小写n结尾的行
grep "^$" hh.txt 匹配空白行
[] 匹配中括号里指定的任意一个字符,只匹配一个字符
例子:grep "s[ao]id" hh.txt 匹配s和i字母中间,要不是a,要不是o的行。
grep "^[a-z]" hh.txt 匹配小写字母开头的行
例子:grep "s[ao]id" hh.txt 匹配s和i字母中间,要不是a,要不是o的行。
grep "^[a-z]" hh.txt 匹配小写字母开头的行
[^] 匹配除括号里的字符以外的任意一个字符
例子:grep "^[^a-z]" hh.txt 匹配不以小写字母开头的行。
grep "^[^a-zA-Z]" hh.txt 匹配不以字母开头的行,(小写字母要在前面)。
例子:grep "^[^a-z]" hh.txt 匹配不以小写字母开头的行。
grep "^[^a-zA-Z]" hh.txt 匹配不以字母开头的行,(小写字母要在前面)。
\ 转义符
例子: grep "\.$" hh.txt 匹配以"."结尾的行。
\{n\} 匹配前面字符恰好出现n次
例子:grep "a\{3\}" hh.txt 匹配a字母连续出现三次的行。
grep "[0-9]\{3\}" hh.txt 匹配包含连续的三个数字的行。
\{n,\} 匹配前面的字符出现不小于n次
例子: grep "^[0-9]\{3\}" hh.txt 匹配最少连续的三个数字开头的行。
\{n,m\} 匹配其前面的字符至少出现n次,最多出现m次。
例子:grep "s[ao]id" hh.txt 匹配s和i字母中间有最少一个a,最多三个a。