• awk(一)


    awk[单独的编程语言解释器]
    一.awk介绍
                 全称:Aho Weinberger Kernaighan三个人的首字母缩写
                1970年第一次出现在Unix机器上,后来在开源领域使用它;
                 所以,我们在Linux中使用。改名为GNU awk;所以,在Linux上实际上叫做GAWK;
                gre 行过滤器
                           -o -i -v -E grep egrep fgrep[写什么就匹配什么]

               sed 行编辑器
                         -n p地址定界【支持pattern】 2.命令 p a i w【只保存地址定界放进来的行】 c
               awk 报告生成器
                        默认情况下,三个工具都不去编辑源文件
                       通过模式盘匹配以及自己本身的语言格式来获取并输出相应的客户所需要的内容
    示例:
    获取系统上面用户id大于等于1小于等于500的用户名用户id
    for i in $(cut -d:-f3 /etc/passwd);do
    if[$i -ge 1 -a $i -le 500];then
    echo grep $i |cut -d;-f1,3
    fi
    done
    #awk -F:'{print $3}'
    awk默认分隔符为空格
    二.awk工作原理

    AWK 工作流程可分为三个部分:

    • 读输入文件之前执行的代码段(由BEGIN关键字标识)。
    • 主循环执行输入文件的代码段。
    • 读输入文件之后的代码段(由END关键字标识)


    三.awk用法
                      awk [option]...'program'FILE...
                     1.program 必须使用单引号
                     2.多条programe语句用{}隔开,可以并列,可以嵌套
                     awk'{print }'/etc/passwd
    四.awk的常见option
                    -F 指定分隔符
                    awk -F[/:]' {print $1,$3}'a.txt
                    其中[]内表示多个字符中的任意一个
                    -v 因为awk是一种语言编译器,能自己定义变量,同时也有内置变量(与环境变量类似)
                    手动指定变量参数
                    awk -v a="a/b"'{print a}'a.txt
                    给a赋值,打印a这个变量
                             1.a是自定义变量 -v FS=":"
                             2.在awk中调用变量 不用加$             awk'{a="a/b";print a}'a.txt

    五.awk的语法格式 --programe
               1.print
                    默认输出(在屏幕上)
                    在awk中没有保存命令,我们可以关联别的命令来保存awk结果;
                    awk '{a="a/b";print a}'a.txt|tee a.bak
              2.printf --实现格式化输出
                    printf " %s是%d班学的最好的学生",变量1,变量2
                  【仅仅只有顺序关系】

    格式符
                      %s 字符串
                      %d  %i 数值
                      %e %E科学计算数值
                      %c ASCii码值
                      %f 浮点数
                      %u 无符号整数
                      %% 逃逸符只显示%自己
    修饰符
                       +默认右对齐
                       -代表左对齐
                       %5.4f
                       5所占位数
                       4所取小数位
    awk '/^UUID/{printf "被挂载文件:%-50s挂载点:%-10s 文件系统格式:%-10s "",$1,$2,$3}'/etc/fstab
                       注意:这里提到了地址定界
                       sed/PAT1/./PAT2/
                 3.变量(内置变量 自定义变量)
                       内置变量--环境变量(bash)(env set-C +C)
                      awk语言所默认支持的变量
                      FS 定义输入的分隔符的变量
                      OFS 定义输出分隔符的变量
                      NF定义分隔以后的参数个数($NF 分隔以后最后一列变量)
                     *变量引用的时候,不用加$,$0,$1...$n,
                             awk -v FS=":"//bash$/{print $1,$2,$NF}'/etc/passwd
                            NR定义文件的行数,定义多个文件的文件的,行号叠加
                            FNR文件只定义自己的行号
                            awk'{print NR}'/etc/fstab/etc/passwd

                            awk'{print FNR}'/etc/fstab/etc/passwd
                            FILENAME存储文件的名字
                            awk'{print FILENAME }'/etc/passwd //把文件名打印N次,N文件的行数
                           cut -d:-f1/etc/passwd5;g5
                                       ARGC 整个命令的段数【注意:不包括awk本身】
                                       ARGV 数组 用来调取命令中,指定的段ARGV【2】
                          awk 'BEGIN{print ARGC}'/etc/passwd/etc/fstab/etc/shadow
                          awk 'BEGIN{print ARGV[3]}'/etc/passwd/etc/fstab/etc/shadow
                                      RS 指定换行符
                                      ORS 输出的时候指定换行符
                          awk -v RS=" "'{print}'/etc/passwd
                          awk -v ORS="@"'{print}'/etc/passwd //可以用来取消换行符
    自定义变量
                         -v变量=值
                         在后面programe中去调用自定义变量时,直接使用即可
                          或者将 ”变量=值“语句直接写在’programe‘即可

  • 相关阅读:
    现代软件工程_团队项目_阿尔法阶段_后端python部分编程规范_2017.11.28
    现代软件工程_团队项目_阿尔法阶段_阿里云服务器部署_2017.11.24
    现代软件工程_团队项目_阿尔法阶段_前端知识分享_2017.11.22
    JavaScript基础(二)
    JavaScript基础(一)
    Socket接口
    【学习】CSS基础(一)
    【学习】HTML基础(二)
    【学习】HTML基础入门(一)
    现代软件工程_团队项目_阿尔法阶段_前端页面原型v1.0.2_2017.11.14
  • 原文地址:https://www.cnblogs.com/jklp-1234/p/11390961.html
Copyright © 2020-2023  润新知