zoukankan      html  css  js  c++  java
  • 正则表达式-linux基础

                                                          通配符   

    通赔符是模糊匹配的基础,因为通赔符机制的存在使得我们在查找文件的时候非常方便
         * :匹配任意长度的任意字符,也可以一个都没有
         .  :匹配任意单个字符,必须有一个
        [ ]  :  匹配指定范围内的单个字符
        [^]  :  匹配指定范围外的任意单个字符
        [^[0-9]] 或 [^0-9] :表示匹配数字外的任意字符
        [^[:upper:]] :表示匹配大写字母外的任意字符
        pa[0-9]: pa 后面匹配一个数字
        [a-z], [A-Z] [0-9] [a-z0-9] [abdxy]
         pa[0-9][0-9]: pa 后面匹配两个数字
        [[:upper:]] :表示所有大写字母
        [[:lower:]] :表示所有小写字母
        [[:alpha:]] :表示所有字母
        [[:digit:]] :表示所有数字
        [[:alnum:]] :表示所有的字母和数字
        [[:space:]] :表示所有的空白字符
        [[:punct:]] :表示所有的标点符号                                              

      重定向  覆盖与追加

    # echo abc > 123.txt    --如果123.txt不存在,则创建123.txt,并内容修改为abc;如果123.txt文件存在,则只把原内容修改为abc
    # echo cba >> 123.txt    --两个>符号,就是原内容不变,再追加新的内容
    # cat > 123.txt << EOF        --如果123.txt不存在,则创建它,并加入两行内容111 222;存在则覆盖它原来的内容
    111
    222
    EOF
    # cat >> 123.txt << HAHA    --相比于上一条,这是追加内容,而且标记不一定要用EOF,只要前后一致成对出现就可以
    > 333
    > 444
    > HAHA                          

    grep文本处理工具

    grep:文本搜索工具,查找匹配内容并打印出来
             grep[选项]匹配模式file对象
        
            -color=auto:对匹配到的文本着色,高量显示
            -i    :忽略大小写
            -E  :等同于egrep  支持使用扩展的正则表达式(不需要使用转义)
            -A  :显示匹配到的行和其后面的行
                    grep -A 1 root /etc/passwd

            -B  :显示匹配到的行和其前面的行
                    grep -    B 1 root /etc/passwd
            -A  :显示匹配到的行和其前后的行
                    grep -C 1 root /etc/passwd

    字符匹配

        .      : 匹配任意单个字符
        [  ]    :匹配指定范围内的任意单个字符
        [ ^ ]    :匹配指定范围外的任意单个字符
        [[ :digit:]]    匹配任何数字
        [[ :lower:]]    匹配任何小写字母    
        [[ :upper:]]    匹配任何大写字母
        [[:alnum: ]]    匹配任何字母
        [[ :alpha:]]    匹配任何字母和数字
        [[ :punct:]]    匹配任何标点符号
        [[ :space:]]    匹配空格符
        [[:xdigit:]]    匹配任何16进制数字

    匹配次数 

       .*    :贪婪模式 :匹配任意长度的任意字符
        ?    :匹配其前面的字符0此或1次,也就是前面的字符可有可无
        +    :匹配其前面的字符一次或多次,即其前面的字符要出现至少一次
        {m}:精确匹配到其前面字符的m次
        {m,n}:匹配其前面的字符至少m次,至多n次
        {0,n}:至多n次
        {m,}:至少m次

    位置锚定    

         ^:行首锚定,用于模式的最左边
        $:行尾锚定,用于模式的最右边
        ^pattern$:用于pattern来匹配整行
        ^$:空白行
        ^[[:space:]]$:空行或空白字符的行
        单词:非特殊字符组成的连续字符都称为单词
        < 或 :词首锚定,用于单词模式的左侧
        > 或 :词尾锚定,用于单词模式的右侧
        <pattern>:匹配完整单词

    sort 排序命令

    sort [选项]文件名
        sort /etc/passwd    :将用户从a到z进行排序
        -t     :指定字段分隔符,便于指定排序的字段
        -k    :用于排序比较的字段
            sort -t: -k3    -n /etc/passwd  
            基于用户的uid的大小进行排序(  -t:参数紧挨着   )
        -n     :基于数值大小排序
            cut -d: -f3  /etc/passwd |sort     按字符进行排序
            cut -d: -f3  /etc/passwd |sort  -n  按数值大小进行排序
        -r    :逆序排序
                sort  -t:  -k3 -n -r /etc/passwd
        -f    :忽略字符大小写
                A的ASCII码为:65     a的ASCII码为97    
        -u     :重复的行只保留一份
        sort -t:    -k7  -u /etc/passwd

        @@@找出/etc/passwd的所有的shell一共有多少种
          sort -t: -k7 -u /etc/passwd | wc -l       

        diff和patch命令

        diff    :逐行比较文件的不同,并显示出来
        patch    :打补丁工具,将补丁打到老文件里面,也就是diff左边的文      件,使得老文件和新文件一样
        
        diff [选项] 老文件 新文件    
        patch [选项] 老文件            
        
        比较两个文件:    diff old.file new.file
        生成补丁文件:     diff oldfile new.file >  1.patch
        将老文件打补丁:    patch -i     1.patch old.file
        还原补丁:        patch -R -i 1.patch old.file                  

         VIM编辑器

    关闭文件
        q:  退出, 在没有改变文件内容的情况下推出
        q!:不保存强制退出
        wq:保存退出
    光标的跳转
        h , l :左 右
        k , j: 上 下
    行首行尾跳转
            ^:跳转至行首的第一个非空白字符
        O:跳转至行首
            $:跳转至行尾
    行间跳转
            数字+G:跳转至(数字)行
        1G或gg:跳转至第一行
        G:跳转至最后一行
    删除命令
        d:删除命令,可以结合光标跳转字符,实现范围删除
        dd:删除光标所在行的整行
    粘贴命令
        p:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方
        P:与p相反
    复制命令(yank)
        y:表示赋值,与d命令相似
        yy:复制一整行
        1yy:赋值1行
    撤销(undo)操作
        u :撤销之前的操作

    VIM末行模式(难点)


    1)地址定界
        :start_pos[,end_pos]
        #: 特定的第#行,例如5 为第五行
        .: 当前行
        $:最后一行
        #,#:指定行范围,左侧为起始行
        #,#+:指定行范围,右侧为左侧行的偏移量 ,例如:3,+7
        %:全文
        /pattern/:第一次被模式所匹配到的行
    2:可实现编辑操作 ,同编辑命令一同使用
        d:表示直接删除,要求直接跟在地址定界符号的后面, 例如::.,$d 表示当前行到最后一行删除。
        y:用来复制地址定界匹配到的行
        c:用来修改地址定界匹配到的行
        w /path/to/file :将范围内的文本保存至文件中
        r /path/to/file:将指定的文件的文本插入指定位置
    3.查找
            /xxx :向下查找xxx,然后按n键会继续向下匹配
            ?xxx :向上查找xxx,然后按n键会继续向上匹配
    4.查找和替换
        格式:地址递接符s/要查找的内容 /要替换的内容/修饰符
        要查找的内容:可以用正则表达式
        替换的内容:不能使用正则表达式,但是可以引用
        1    :表示引用第一个括号匹配的内容
        2    :表示引用第二个括号匹配的内容
        &      :引用整个模式匹配的文本
        
        修饰符
        i    :忽略大小写
        g    :全局替换。
        分隔符:     # 、    s、    @    、
    ======================================================
    例题
    ======================================================
    1 . 复制/etc/grub2.cfg文件至/tmp目录中,用查找替换命令删除/tmp/grub2.cfg文件中以空白字符开头的行的行首的空白字符
    2 :复制/etc/rc.d/init.d/functions文件至/tmp目录中,用查找替换命令为/tmp/functions文件的每一个空白字符开头的行的首行加上#
    3 . 为/tmp/grub2.cfg文件的前三行的行首加上#号
    4 . 将/etc/yum.repos.d/CentOS-Base.repo文件中所有的enabled=0替换为ennabled=1,所有的gpgcheck=0替换为gpgcheck=1
    =======================================================
    答案
    =======================================================
    1.        :%s/ ^[[:space:]]+ //
    2.         :%s/^[[:space:]]+ / #&  /
    3.        :1,3s/^.  / #&    /
    4.        :%s / (enabled|ennabled)=0/ 1=1    /
    =======================================================
        





    蓦然回首,那人却在,灯火阑珊处。
  • 相关阅读:
    自动跳转至首页(Java Script)
    简单的轮播图(Java Script)
    蓝桥杯 2016年 第七届 四平方和(JAVA)
    蓝桥杯 2016年 第七届 剪邮票(JAVA)
    蓝桥杯 2015年 第六届 生命之树(JAVA)
    蓝桥杯 2015年 第六届 垒骰子(JAVA)
    numpy笔记
    opencv安装和运行
    vs code环境配置注意点
    numpy中matrix使用方法
  • 原文地址:https://www.cnblogs.com/linux-186/p/7341368.html
Copyright © 2011-2022 走看看