• shell三剑客


    一、简述三剑客的作用

    awk擅长取列;

    sed擅长取行和替换;

    grep擅长查找功能,比如可以根据关键字查询对应的日志。

    二、三剑客使用介绍

    1.awk

    awk是一个处理文本的编程语言工具,能用简短的程序处理标准输入、文件、数据排序、计算以及生成报表等。

    ①基本的命令语法:awk option 'pattern {action}' file

      其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号用于根据特定的模式对一系列指令进行分组。

    -F 指定分割符,默认分隔符是空格

    -f  调用脚本

    -v  定义变量

    BEGIN  初始化代码块,在对每一行进行处理前,初始化代码块。主要是引用全局变量

    //  匹配代码块,可以是字符串也可以是代码块

    {}  命令代码块,可包含一个或多个命令

    ;  多个命令使用分号分割

    END  结束代码块,在每一行处理之后再执行的代码块

    $0  整行输出

    $n n表示每行第几列字段输出,如果n大于10需要用{}括起来,如${10}

    NF  字段数量

    NR  行号

    FNR 与NR类似,多文件不递增,都从1开始

    \t  制表符

    \n 换行符

    FS  BEGIN时定义分隔符

    RS  输入分隔符

    OFS  输出字段分割符,默认是空格

    ORS 输出的记录分割符,默认是换行符

    ②案例

     2.sed

    ①基本命令语法

    sed作用是过滤和替换文本。

      sed [选项] '地址 命令' file 

      选项 描述
      -n 不打印模式空间
      -e 执行脚本、表达式来处理
      -f 执行动作从文件读取执行
      -i 修改原文件
      -r 使用扩展正则表达式

      地址 描述
      first~step 步长,每 step 行,从第 first 开始
      $ 匹配最后一行
      /regexp/ 正则表达式匹配行
      number 只匹配指定行
      addr1,addr2 开始匹配 addr1 行开始,直接 addr2 行结束
      addr1,+N 从 addr1 行开始,向后的 N 行
      addr1,~N 从 addr1 行开始,到 N 行结束

      命令 描述
      s/要替换的内容/替换成的内容/ 替换字符串
      p 打印当前模式空间
      P 打印模式空间的第一行
      d 删除模式空间,开始下一个循环
      D 删除模式空间的第一行,开始下一个循环
      = 打印当前行号

    ②案例

     3.grep

    ①基本命令语法:

     Usage: grep [选项]... 匹配项 [文件]...

      支持的正则 描述 

      -E,--extended-regexp 模式是扩展正则表达式(ERE)

      -e,--regexp=PATTERN 使用模式匹配,可指定多个模式匹

      -f,--file=FILE 从文件每一行获取匹配模式

      -i,--ignore-case 忽略大小写

      -w,--word-regexp 模式匹配整个单词

      -x,--line-regexp 模式匹配整行

      输出控制 描述

      -m,--max-count=NUM 输出匹配的结果 num 数

      -n,--line-number 打印行号

      -H,--with-filename 打印每个匹配的文件名

      -h,--no-filename 不输出文件名

      -o,--only-matching 只打印匹配的内容

      -q,--quiet 不输出正常信息

      -s, --no-messages 不输出错误信息

      -r,--recursive 递归目录

      -c,--count 只打印每个文件匹配的行数

      --include=FILE_PATTERN 只检索匹配的文件

      --exclude=FILE_PATTERN 跳过匹配的文件

      --exclude-from=FILE 跳过匹配的文件,来自文件模式

      --exclude-dir=PATTERN 跳过匹配的目录

      -v,--invert-match 打印不匹配的行 

      内容行控制 描述
      -B,--before-context=NUM 打印匹配的前几行

      -A,--after-context=NUM 打印匹配的后几行

      -C,--context=NUM 打印匹配的前后几行

      --color[=WHEN], 匹配的字体颜色

    ②案例

  • 相关阅读:
    每日随笔
    每日随笔
    每日随笔
    JavaSE 类加载机制
    MySQL 索引
    JavaSE 线程的生命周期
    JVM堆内存(heap)详解
    Redis 学习笔记(三)哨兵模式配置高可用和集群
    sqlserver数据库连接数相关问题
    多项式多点求值
  • 原文地址:https://www.cnblogs.com/daisyyang/p/16148605.html
Copyright © 2020-2023  润新知