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    /
    =======================================================
        





    蓦然回首,那人却在,灯火阑珊处。
  • 相关阅读:
    Android自定义之仿360Root大师水纹效果
    Android之TextView的Span样式源码剖析
    Android之TextView的样式类Span的使用详解
    随着ScrollView的滑动,渐渐的执行动画View
    仿微信主界面导航栏图标字体颜色的变化
    android自定义之 5.0 风格progressBar
    Android性能优化之内存篇
    Android性能优化之运算篇
    How to install Zabbix5.0 LTS version with Yum on the CentOS 7.8 system?
    How to install Zabbix4.0 LTS version with Yum on the Oracle Linux 7.3 system?
  • 原文地址:https://www.cnblogs.com/linux-186/p/7341368.html
Copyright © 2011-2022 走看看