正则表达式在linux命令中的作用:
在使用grep、awk和sed命令时,需要使用正则表达式。
在查找搜索一些文件用正则表达式来快速查找
在批处理时用正则表达式
比如通过grep找代码编译结果中是否有错误。或者是否有我代码的错误
* 匹配0到任意字符
? 匹配单个字符
[[:alpha:]] 匹配单个字母
[[:lower:]] 匹配单个小写字母
[[:upper:]] 匹配单个大写字母
[[:digit:]] 匹配单个数字
[[:alnum:]] 匹配单个数字或字母
[[:punct:]] 匹配单个符号
[[:space:]] 匹配单个空格
{}表示不存在的或者存在的
{1..9} 1-9
{a..f} a-f
{1,3,5} 135
{a,c,e} a c e
{1..3}{a..c} 1a 2a 3a 2a 2b 2c 3a 3b 3c
[]表示存在的
[a-C] aA bB cC
[a-c] aA或者bB或者c
[1-3] 1或者2或者3
[145] 1或者4或者5
[^abc]|[!abc] 除了a并且除了b并且除了c
~ 当前用户家目录
~username 指定的用户家目录
~+ 当前目录
~- 当前目录之前所在目录
. 当前目录
.. 当前目录的上一级
例子: 在批量移动文件时用正则表达式
-
使用句点匹配单字符
句点“.”可以匹配任意单字符。例如,如果要匹配一个字符串,以be g开头,中间夹一个
任意字符,那么可以表示为be g . n,“.”可以匹配字符串头,也可以是中间任意字符。
在ls-l命令中,可以匹配一定权限:
.. . x . . x . . x
此格式匹配用户本身,用户组及其他组成员的执行权限。
~$ ls -l |grep ...x..x..x
- 在行首以^匹配字符串或字符序列
^只允许在一行的开始匹配字符或单词。例如,使用ls-l命令,并匹配目录。之所以可以
这样做是因为ls-l命令结果每行第一个字符是d,即代表一个目录。
~$ ls -l |grep ^d
- 在行尾以$匹配字符串或字符
可以说$与^正相反,它在行尾匹配字符串或字符,$符号放在匹配单词后。假定要匹配以
单词lisp结尾的所有行,操作为:
~$ ls |grep s$
- 使用*匹配字符串中的单字符或其重复序列
使用此特殊字符匹配任意字符或字符串的重复多次表达式。例如:
找f*1(以f开头1结束的字符串)
~$ ls | grep f*1