zoukankan      html  css  js  c++  java
  • Linux三剑客awk的应用对比案例详解

    awk的格式

    awk     参数     ‘条件’(单引号)  文件路径

    a.参数我们一般用-F  “[]”  (双引号)   指定分隔符

    b.条件  为BEGIN 模块  +  模式{条件}  + END模块

    b1.BEGIN模块在执行awk读取文件之前就执行,一般用来定义我们的内置变量,awk必须在输入文件进行任何处理前先执行BEGIN里的动作(action)。

    b2.模式{条件}模式就是我们需要查找的范围。模式可以通过正则表达式模式,比较式模式,范围式模式,特殊的模式即BEGIN和END共计四种模式。

    条件就是我们在查找的范围里的某一个指定的条件

    b3.END模块

    在awk读取完所有的文件的时候,再执行END模块,一般用来输出一个结果(累加,数组结果),也可以是和BEGIN模块类似的结尾标识信息

     

    awk的格式

     

     

    awk     参数     ‘条件’(单引号)  文件路径

     

    a.参数我们一般用-F  “[]”  (双引号)   指定分隔符

     

    b.条件  为BEGIN 模块  +  模式{条件}  + END模块

     

    b1.BEGIN模块在执行awk读取文件之前就执行,一般用来定义我们的内置变量,awk必须在输入文件进行任何处理前先执行BEGIN里的动作(action)。

     

    b2.模式{动作}模式就是我们需要查找的范围是以行为单位。模式可以通过正则表达式模式,比较式模式,范围式模式,特殊的模式即BEGIN和END共计四种模式。

     

    动作就是我们在查找的范围里的某一个指定的条件以列为单位

     

    b3.END模块

     

    在awk读取完所有的文件的时候,再执行END模块,一般用来输出一个结果(累加,数组结果),也可以是和BEGIN模块类似的结尾标识信息

     

    Awk的正确书写格式为

     

     

     

    例:awk -F “[]”‘BEGIN{    }   模式{     }   END{   }’ 文件路径

     

     

     

    下面我们结合案例详细说明awk的使用

     

    首先我们创建一个文件

     

    测试文件

     

    1. Zhang Dandan    41117397    :250:100:175
    2. Zhang Xiaoyu    390320151   :155:90:201
    3. Meng  Feixue    80042789    :250:60:50
    4. Wu    Waiwai    70271111    :250:80:75
    5. Liu   Bingbing  41117483    :250:100:175
    6. Wang  Xiaoai    3515064655  :50:95:135
    7. Zi    Gege      1986787350  :250:168:200
    8. Li    Youjiu    918391635   :175:75:300
    9. Lao   Nanhai    918391635   :250:100:175

     

    说明:

     

    • 第一列是姓氏
    • 第二列是名字
    • 第一列第二列合起来就是姓名
    • 第三列是对应的ID号码
    • 最后三列是三次捐款数量

     

    1. 我们创建完文件以后我们干什么?
    2. 我们要先知道awk是按列取数据最方便的

     

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

     

    首先我们要先找到姓张的人awk –F “[ :]”指定分割符为空格和冒号:把内容分割成一列一列的

     

    ‘/Zhang/{print $1,$5}‘ 在正则里我们学过//里的内容为需要过滤的内容{}里的print为输出的意思$2和$5就是第一列和第五列

     

     

     

     

     

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

     

     

     

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

     

     

    $3~是指定第三列拥有正则的能力

     

     

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

     

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

     

     

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

     

     

    .

     

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

     

     

     

     

    多模式多动作

     

     

     

    这里我们说一下xargs  -l1

     

    Xargs会把管道传递过来的stdin里的换行符,空白换成空格取代,形成一行作为整体输出:

     

    如果不指定分批选项(-i,-L,-n),Xargs的一整行结果将作为一个整体输出,而不是分隔开的!

     

    分割选项:-d ,-0 | 分批选项: -n,-L,-i/-I | 使用-p或-t来观察命令的执行过程

     

     

     

    BEGIN模块

    在我们执行awk读取文件之前就执行一般用来定义我们的内置变量

    因为awk默认的读入换行符和输出换行符都市\n

    我们可以通过BEGIN来给他变换一下值

    例;

     

     我们也可以让BEGIN指定输出符号

    我们还可以指定变量

    还可以进行计算

    也可以在文件输出的时候作为输出表头使用我们应该知道awk在执行的时候先执行BEGIN模块

     通过以上案例我们可以得出在没有文件的条件awk依旧可以处理BEGIN模式下的动作(命令)

    END模块:

    END在awk读取玩所有的文件的时候,在执行END模块,一般用来输出一个结果(累加。数组的结果)也可以和BEGIN一样 的意思在结尾给文件进行结尾语

    例:

     我们也可以用END进行运算输出结果

     

    awk数组

    数组就是具有相同点或者说共同点比如ab.ac.ad.af.ag他们的共同点就是都有a

    假如我们想用一种变量表示多组数据通常我们有优先考虑数组的形式

     通过数组查看访问量

  • 相关阅读:
    【转】Eclipse插件开发之基础篇(1) 插件开发的基础知识
    js获取周.html
    Go语言 基础
    MySQL replace into
    元认知:思考“何为思考”
    redis 流水线
    关于Blog现象的一些思考。
    [LCS]LCS2005服务器应用程序
    [WAP]dotNet在WAP应用开发中实现按指定页数翻页的解决方案
    [Cache]深入学习Enterprise Library for .NET Framework 2.0的Cache机制——分析篇
  • 原文地址:https://www.cnblogs.com/wanigna/p/9871052.html
Copyright © 2011-2022 走看看