zoukankan      html  css  js  c++  java
  • awk基础

    awk不仅仅时linux系统中的一个命令,而且是一种编程语言,可以用来处理数据和生成报告(excel)。处理的数据可以是一个或多个文件,可以是来自标准输入,也可以通过管道获取标准输入,awk可以在命令行上直接编辑命令进行操作,也可以编写成awk程序来进行更为复杂的运用。

    1.格式

    pattern可以理解为条件,也可以理解为筛选内容(范围)。

    例如:

    awk结合正则查看文本的内容:

    -F 指定awk按照什么标志进行文件的切割,切割成一列一列的。如果不指定 -F 参数 awk默认以空格进行文本的切割,{}中的代表输出的意思,$代表取列 ,$1就是取第一列,以此类推。($0,取文本的全部,$NF取每行的最后一列)

    应用

    按单词出现频率降序排序(计算文件中每个单词的重复数量)

    注:(此处使用sort -rn逆转排序uniq  -c删除相同的并计数

    例如

    awk的模式都有几种

    • 正则表达式作为模式
    • 比较表达式作为模式
    • 范围模式
    • 特殊模式BEGIN和END

     例如

    练习题1:显示姓Zhang的人的第二次捐款金额及她的名字

    awk  -F "[ :]+" '$1~/^Zhang/{print $1,$5}' test

     

    练习题2:显示Xiaoyu的名字和ID号码

    awk  -F "[ :]+" '$2~/Xiaoyu/{print $1$2,$3}' test

     

    练习题3:显示所有以41开头的ID号码的人的全名和ID号码

    awk  -F "[ :]+" '$3~/^41/{print $1$2,$3}' test

     

    练习题4:显示所有以一个DX开头的人名全名

    awk  -F "[ :]+" '$2~/^D|^X/{print $1$2}' test

     

    练习题5:显示所有ID号码最后一位数字是15的人的全名

    awk  -F "[ :]+" '$3~/1$|5$/{print $1$2}' test

    练习题6:显示Xiaoyu的捐款,每个值都有以开头。如520135

    awk  -F "[ ]+"  '$2~/Xiaoyu/{print $4}' test | tr ":" "$"

    练习题7:显示所有人的全名,以姓,名的格式显示,如MengFeixue

    awk  -F "[ ]+"  '{print $1,$2}' test | tr " " ","

     

    变量

    默认变量的初始值为0BEGIN(可以计算,赋值)

    END模式输出结果

    求和(1-100,使用seq 追加100到11文件)

     

    数组

    例如

    我们可以利用(动作 )进行运算,利用END模块(for循环(对重复的数据计数))输出结果

     

     

     

     

  • 相关阅读:
    第二十课字符串
    数学归纳法:搞定循环与递归的钥匙
    11预处理命令下
    Xshell6无法连接上虚拟机的解决方法
    redis数据库常用命令
    redis使用get命令,中文乱码问题
    Ubuntu下redis的安装和简单操作
    启动hbase后,使用指令进入shell命令行模式时报错"wrong number of arguments (0 for 1)"
    启动hbase报错:“SLF4J: Class path contains multiple SLF4J bindings.”解决方法
    ./bin/hadoop 提示“没有那个文件或目录”解决方法
  • 原文地址:https://www.cnblogs.com/aini131497/p/9870639.html
Copyright © 2011-2022 走看看