码迷,mamicode.com
首页 > 系统相关 > 详细

Linux正则表达式

时间:2020-04-10 22:25:32      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:增删改   info   编辑器   $nf   文本过滤   bsp   正则表达式   正则表达式引擎   多个   

一、正则表达式的意义

      处理大量的字符串

      处理文本

      通过特殊符号的辅助,让Linux管理员快速过滤、替换、处理所需要的字符串、文本,让工作高效。

二、Linux三剑客

      文本处理工具,均支持正则表达式引擎

      grep:文本过滤工具(模式:pattern)

      sed :stream editor,流编辑器,文本编辑工具

      awk :Linux的文本报告生成器(格式化文本),Linux上是gawk

三、基本正则表达式BRE集合

      匹配字符

      匹配次数

      位置瞄定  

技术图片

四、扩展正则表达式ERE集合

      扩展正则必须用grep -E才能生效

技术图片

五、grep命令

      作用:文本搜索工具,根据用户指定的模式(过滤条件),对目标文本逐行进行匹配检查,打印匹配到的行

      模式:由正则表达式的元字符及文本字符所编写的过滤条件。

      语法:grep [options] [pattern] file

技术图片        

  grep命令实践

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

 注:^:表示以某字符为开头

        .:表示任意0或者多个字符

       .* :表示匹配所有内容

        .*o:一直到字母o结束(匹配到相同字符到最后一个字符的特点,称之为贪婪匹配)

        [a-z]:匹配所有小写单个字母

        [A-Z]:匹配所有单个大写字母

        [a-zA-Z]:匹配所有的单个大小写字母

        [0-9]:匹配所有单个数字

        [a-zA-Z0-9]:匹配所有数字和字母

 扩展正则表达式grep -E

      +号:表示匹配前一个字符1次或者多次,必须用grep -E扩展正则

      ?号:表示匹配前一个字符0次或者1次

      | 符:或者的意思

    ())小括号:将一个或者多个字符捆在一起,当做一个整体进行处理

      注:小括号功能之一是分组过滤被括起来的内容,括号内的内容表示一个整体

              括号()内的内容可以被后面的”\n“正则引用,n表示数字,表示引用第几个括号的内容

              \1:表示从左侧起,第一个括号中的模式所匹配到的字符

               \2:表示从左侧起,第二个括号中的模式所匹配到的字符

      {n,m}匹配次数:重复前一个字符的各种次数,可以通过-o 参数显示明确的匹配过程

 技术图片

 技术图片

 技术图片

 六、sed命令

    sed是字符流编辑器,简称流编辑器。sed是操作、过滤和转换文本内容的强大工具

    常用功能包括结合正则表达式对文件实现快速增删改查,其中查询的功能中,最常用的两大功能是过滤(过滤指定的字符串)、取行(取出指定的行)

   语法:sed 【选项】 【sed内置命令】【输入文件】

   选项:

 技术图片

   内置命令符(用于对文件进行不同的操作功能)

技术图片

   sed匹配的范围

技术图片

   注:sed要实现grep的过滤效果,必须把要过滤的内容放在双斜杠中

           sed想要修改文件内容,必须用参数-i

           s内置符配合g,代表全局替换,中间的“/”可以替换成“#@/”等

 技术图片

 技术图片

 技术图片

 技术图片

 技术图片

    示例:取出Linux的ip 地址(去头去尾法)

技术图片

七、awk命令

    awk有强大的文本格式化的能力。支持条件判断、数组、循环等功能。

    grep:擅长单纯的查找或匹配文本内容

    awk:更适合编辑、处理匹配到的文本内容

    sed :更适合格式化文本内容,对文本进行复杂处理

    awk 语法:awk [option]  ‘pattern[action]‘  file ...

    awk 参数 ‘条件动作’ 文件

  技术图片

    action指的是动作,awk擅长文本格式化,且输出格式化后的结果,因此最常用的动作是print和printf

    awk 默认以空格为分隔符,且多个空格也识别为一个空格,作为分隔符。awk按行处理文件,一行处理完毕,处理下一行,根据用户指定的分隔符工作,没有默认空格。

    指定了分隔符后,awk把每一行切割后的数据对应到内置变量中。

    技术图片

     $0:表示整行

     $NF:表示当前分割后的最后一列

     $(NF-1):表示倒数第二列

     awk内置变量

 技术图片

     awk可以自动定义输出内容。awk 必须外层单引号,内层双引号。内置变量都不得添加双引号,否则会被识别为文本。

     awk参数

 技术图片

    awk实践

 技术图片 技术图片

  技术图片

 技术图片

 技术图片

 技术图片

 技术图片

Linux正则表达式

标签:增删改   info   编辑器   $nf   文本过滤   bsp   正则表达式   正则表达式引擎   多个   

原文地址:https://www.cnblogs.com/jiawei2527/p/12669538.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!