linux-2 正则表达式

来源:互联网 发布:华为手机网络诊断 编辑:程序博客网 时间:2024/06/10 02:05

正则表达式在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           指定的用户家目录
~+                           当前目录
~-                            当前目录之前所在目录

.                               当前目录
..                              当前目录的上一级


例子:在批量移动文件时用正则表达式


  1. 使用句点匹配单字符
    句点“.”可以匹配任意单字符。例如,如果要匹配一个字符串,以be g开头,中间夹一个
    任意字符,那么可以表示为be g . n,“.”可以匹配字符串头,也可以是中间任意字符。
    在ls-l命令中,可以匹配一定权限:
    .. . x . . x . . x
    此格式匹配用户本身,用户组及其他组成员的执行权限。
    ~$ ls -l |grep ...x..x..x

  1. 在行首以^匹配字符串或字符序列

  2. ^只允许在一行的开始匹配字符或单词。例如,使用ls-l命令,并匹配目录。之所以可以
    这样做是因为ls-l命令结果每行第一个字符是d,即代表一个目录。
    ~$ ls -l |grep ^d

  3. 在行尾以$匹配字符串或字符
    可以说$与^正相反,它在行尾匹配字符串或字符,$符号放在匹配单词后。假定要匹配以
    单词lisp结尾的所有行,操作为:
    ~$ ls |grep s$

  4. 使用*匹配字符串中的单字符或其重复序列
    使用此特殊字符匹配任意字符或字符串的重复多次表达式。例如:
    找f*1(以f开头1结束的字符串)
    ~$ ls | grep f*1



原创粉丝点击