• linux100day(day4)--文本处理三剑客


      

    在介绍三剑客之前,先来认识一下通配符和正则表达式

    通配符
        

    正则表达式

    作用:通过一些特殊字符,来表示一类字符内容

    1、字符匹配

      .     任意一个字符

      [ ]   范围内的任意一个字符

      [^ ] 取反

      字符类 [:digit:] [:alnum:] [:alpha:] [:lower:] [:upper:] [:space:] [:punct:]

    2、次数匹配

      *    匹配前面的字符0次到多次

      ?  匹配前面的字符0次到1次

      +    匹配前面的字符1次到多次

    3、位置锚定

      ^  锚定行首

      $  锚定行尾

        锚定词首和锚定词尾

      >  锚定词尾

      <  锚定词首

      < oot>  匹配root单词

      {m}     匹配前面的字符m次

      {m,n}  匹配前面的字符m到n次

    4、分组

      ()

      分组特性:默认清空下,linux系统下回为分组指定变量,变量表示形式1 2 3

    day4--文本处理三剑客awk,sed,grep

    三剑客用法非常灵活强大,需要在练习中慢慢体会,遂以练习为主。

    awk(报告生成器)

         awk作为三剑客的老大,擅长于取列,主要用来做文本输出格式化

         awk在处理文件时是逐行处理的

         在awk中,全部行称为$0,第一个字段称为$1,第二个字段称为$2……

         NR为行号,NF表示最后一行

         BEGIN表示最开始执行,END表示最末尾执行,因为这种特性,BEGIN常常用来赋值

         awk  [选项] [处理命令(脚本)]  [文件]

    awk -F 指定输入文件折分隔符
    awk -v 赋值一个用户定义变量
    awk -f 从脚本文件中读取awk命令

          例1、输出/etc/passwd第一行的第一个域

          

          例2、打印出/etc/passwd的第3个域和第5个域

          

          例3、匹配/var/log/message中,带有erro关键字的相关信息

          

          例4、输出/etc/passwd中文件名,行数,列数,和整行信息     

          awk -F ':' '{print FILENAME, NR , NF ,$0}' /etc/passwd

          例5、使用冒号分隔符,查询最后一列

          

          例6、使用awk输出第一块网卡的ip地址

           

     

    sed(流处理器)

        sed作为三剑客的老二,擅长取行,替换和数据搜寻  

        sed [选项] [脚本] [文件]

    sed -e 以选项中指定的脚本来处理输入结果
    sed -f 以选项中指定的脚本文件来处理输入结果
    sed -n 只显示处理后结果
    sed -i 替换

        例1、查看/etc/passwd5-10行

          

          这个p代表print打印,同理,d代表delete删除

        例2、搜寻/etc/passwd中有root关键字的行

          

        例3、新建一个文件,并删除2到4行

          

    grep(文本行过滤工具)

        grep [option]... PATTERN [FILE]

                   PATTERN一般使用两种方法,正则表达式和通配符

        egrep = grep -E 使用扩展的正则表达式进行匹配

        fgrep = fast grep 只使用文件通配符进行匹配

        grep 默认使用正则表达式进行文本匹配

    grep -P使用perl语言的正则表达式引擎进行搜索
    grep -f指定文件
    grep -i 忽略大小写
    grep -v反选
    grep --color=auto 语法着色
    grep -c统计
    grep -o输出时仅显示匹配内容(默认输出的是匹配到的行)
    grep -n显示行号
    grep -w只匹配与整个单词匹配的行

         例1、显示/proc/meminfo文件中大小s开头的行

          

         例2、显示/etc/passwd文件中不以/bin/bash结尾的行

          

         例3、显示/etc/passwd文件中UID最大的用户的用户名

          

         例4、如果用户root存在,显示其默认的shell程序

           

          例5、找出/etc/passwd中的两位或三位数

          

  • 相关阅读:
    遥控按键上报键值映射问题
    AutoLock类
    Mutex互斥锁
    c++ 字符串和数字转换时的特殊处理
    pytorch实现MLP并在MNIST数据集上验证
    python实现直方图均衡化,理想高通滤波与高斯低通滤波
    python实现贝叶斯网络的概率推导(Probabilistic Inference)
    python+opencv实现车牌定位
    python添加高斯噪声和椒盐噪声,实现中值滤波和均值滤波,实现Roberts算子和Sobel算子
    c++学习笔记_6
  • 原文地址:https://www.cnblogs.com/Y139147/p/11353628.html
Copyright © 2020-2023  润新知