通配符

通赔符是模糊匹配的基础,因为通赔符机制的存在使得我们在查找文件的时候非常方便
     * :匹配任意长度的任意字符,也可以一个都没有
     .  :匹配任意单个字符,必须有一个
    [ ]  :  匹配指定范围内的单个字符
    [^]  :  匹配指定范围外的任意单个字符
    [^[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:]]$:空行或空白字符的行
    单词:非特殊字符组成的连续字符都称为单词
    \< 或 \b:词首锚定,用于单词模式的左侧
    \> 或 \b:词尾锚定,用于单词模式的右侧
    \<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    /
=======================================================

正则表达式-linux基础的更多相关文章

  1. 原来今天是感恩节-Linux基础继续&MySQL和PHP

    hi 原来今天是感恩节.虽然一直没有过这个节日的习惯,但仅仅是听到感恩的消息,都能想到一幅幅画面.愿大家安好! 下午开题会议还是有所收获,悄悄的,就变向那个不喜欢自己的人了. 一.Linux基础(二) ...

  2. Linux基础入门

    第一节,linux系统简介 一.实验内容 了解 Linux 的历史,Linux 与 Windows 的区别等入门知识. 二.实验要求 阅读linux简介与历史 三.实验步骤 (一).Linux 为何物 ...

  3. Linux基础与Linux下C语言编程基础

    Linux基础 1 Linux命令 如果使用GUI,Linux和Windows没有什么区别.Linux学习应用的一个特点是通过命令行进行使用. 登录Linux后,我们就可以在#或$符后面去输入命令,有 ...

  4. Linux基础入门学习笔记20135227黄晓妍

    学习计时:共24小时 读书:1小时 代码:8小时 作业:3小时 博客:12小时 一.学习目标 1. 能够独立安装Linux操作系统   2. 能够熟练使用Linux系统的基本命令   3. 熟练使用L ...

  5. Linux 基础入门----推荐课程

    Linux 基础入门课程:https://www.shiyanlou.com/courses/1 很好的一门Linux基础课,精炼.简洁!推荐! 课程内容: 第1节 Linux 系统简介 https: ...

  6. Linux 基础(5)

    Linux 基础 (五) 一.shell相关知识 shell一般代表两个层面的意思,一个是命令解释器,比如BASH,另外一个就是shell脚本.通过解释器的角度来理解shel 命令分为: ==> ...

  7. 面试题-linux基础

    Linux基础和git linux的基础命令(怎么区分一个文件还是文件夹) ls -F  在显示名称的时候会在文件夹后面添加“/”, 在文件后面加“*” 日志以什么格式,存放在哪里?日志可以存储在“/ ...

  8. linux 基础 文件系统 用户权限

    描述Linux系统的启动过程? 1.开机自检 BIOS 2.MBR引导 3.GRUB菜单 4.加载内核 5.运行init进程 6.从/etc/inittab读取运行级别 7.根据/etc/rc.sys ...

  9. Linux基础命令-Nginx-正则表达式( grep sed awk )-Shell Script--etc

    Linux基础使用 学习内容博客 内存 查看swap分区信息 > swapon -s 添加swap分区 > mkswap /dev/sdb2 > 激活 swapon -a /dev/ ...

随机推荐

  1. iOS开发 MVVM+RAC 的使用

    好长一段时间没有敲简书了! 主要是因为一直在跑面试. 终于还是在上海入职了! 由于项目原因最终还是入了MVVM+RAC的坑 下面是正题. Demo效果 使用MVVM+RAC请求网络数据 Reactiv ...

  2. docker - 由于docker swarm子网与host机器网络冲突导致的container通信问题的解决方案

    背景 近期,公司网络要迁移到新的网段,所以原来在服务器上面搭建的docker swarm需要重新构建... 拿到新的服务器地址看了一下,“10.xxx.xxx.xxx" ... 纳尼,这IP ...

  3. JavaScript系统学习小结——变量、作用域和内存问题

    趁着写完小论文还未彻底消散的学习氛围,开始着重巩固自己JavaScript的基础知识,为秋招做最基本的准备. 变量:Js的变量可能保存两种不同数据类型的值:基本类型值和引用类型值. 基本类型包括:Un ...

  4. github 发布项目

    自己开发了一个插件或项目,需要发布到github上,之前看到很多文章,但是都会有一些问题,经过自己多次尝试,想分享给初学者们. 首先你需要一个github账号,所有还没有的话先去注册吧! 官网:htt ...

  5. YARN笔记——技术点汇总

    目录 · 概况 · 原理 · 资源调度器分类 · YARN架构 · ResourceManager · NodeManager · ApplicationMaster · Container · YA ...

  6. Tornado-StaticFileHandler参考

    StaticFileHandler ====== tornado.web.StaticFileHandler 源代码中的解释 class StaticFileHandler(RequestHandle ...

  7. Linux(3)用户和权限管理

    用户, 权限管理 Linux中root账号通常用于系统的维护和管理, 它对操作系统的所有部分具有不受限制的访问权限 在Unix/Linux安装过程中, 系统会自动创建许多用户账号, 而这些默认的用户就 ...

  8. 走过夏天,我的H5旅程,一路慢行

    <!DOCTYPE html> <!-- 文档类型声明:让浏览器,按照html5的标准对代码进行解释和执行. 文档类型声明必不可少,而且,必须放在文档最上方. 如果不写文档类型声明, ...

  9. VMware的安装和使用

    注:内容系兄弟连Linux教程(百度传课:史上最牛的Linux视频教程)的学习笔记. VMware的安装和使用 1. 虚拟机的安装 这里安装虚拟机VMware10,下载安装程序,双击安装-->为 ...

  10. (4)UIView和父子控件

    IButton控件中除了有自身的属性之外还有继承的view的属性 内存地址一样,是同一个view来的,也就是最外层的view.