zoukankan      html  css  js  c++  java
  • awk从放弃到入门(1):awk基础

    一、awk简介

      awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。

      awk 是一种很棒的语言,它适合文本处理和报表生成,其语法较为常见,借鉴了某些语言的一些精华,如 语言等。在 linux 系统日常处理工作中,发挥很重要的作用,掌握了 awk将会使你的工作变的高大上。 awk 是三剑客的老大,利剑出鞘,必会不同凡响。

      Linux三剑客:

    (1)grep:适合单纯的查找和匹配文本。

    (2)sed:适合编辑匹配到的文本。

    (3)awk:适合格式化文本,对文本进行较复杂的格式处理。

    二、awk基础:action

      <语法>

      awk [options] 'program' file1 , file2 , ```

      awk [options] 'Pattern{Action}' file

      2.1通过Action了解awk:

    <例子1>awk最常用的就是print和printf功能,例子中使用awk打印功能,将test_awk.txt文件中的内容打印出来。

    <例子2>实际场景来使用awk功能。上图中的awk '{print $1}',表示输出df的信息的第1列,$1表示将当前行按照分隔符分割后的第1列,不指定分隔符时,默认使用空格作为分隔符,细心的你一定发现了,上述信息用的空格不止有一个,而是有连续多个空格,awk自动将连续的空格理解为一个分割符了。

    $0 表示显示整行 ,$NF表示当前行分割后的最后一列($0和$NF均为内置变量)注意,$NF 和 NF 要表达的意思是不一样的,对于awk来说,$NF表示最后一个字段,NF表示当前行被分隔符切开以后,一共有几个字段。也就是说,假如一行文本被空格分成了7段,那么NF的值就是7,$NF的值就是$7,  而$7表示当前行的第7个字段,也就是最后一列,那么每行的倒数第二列可以写为$(NF-1)。

    <例子2-1>awk '{print $1,$2}' test_awk.txt  #打印test_awk.txt文件中第1列和第2列的内容。

    <例子2-2>awk '{print $NF}' test_awk.txt  #表示将文本中最后一列打印出来

     <例子2-3>awk '{print $(NF-1)}' test_awk.txt  #表示将文本中倒数第二列的内容打印出来

    <例子2-4>awk '{print $0}' test_awk.txt=awk '{print}' test_awk.txt  #表示将文本中的所有内容打印出来

    <例子3>可以自己添加字段,并与文件中的内容拼接

     awk '{print $1,$2,"string"}' test_awk.txt

     awk '{print $1,$2,666}' test_awk.txt

     awk '{print "diyilie",$1} {print "dierlie",$2}' test_awk.txt

    三、awk基础:pattern

      AWK 包含两种特殊的模式:BEGIN 和 END。

      (1)BEGIN 模式:指定了处理文本之前需要执行的操作

      (2)END 模式:指定了处理完所有行之后所需要执行的操作

      3.1BEGIN 模式案例

    awk 'BEGIN{print "bg_name","bg_gender"} {print $1,$2}' test_awk.txt  #表示在执行打印第1列和第2列的动作前先执行BEGIN中的打印动作

      3.2END模式案例

    awk '{print $1,$2} END{print "end_name","end_gender"}' test_awk.txt  #表示在执行打印第1列和第2列的动作后再执行END中的打印动作

    【参考大佬:http://www.zsythink.net/archives/1336】

  • 相关阅读:
    linux 换源
    Jedis使用
    mysql 安装
    ORACLE 11g安装
    网易有道云笔记去除左下角广告
    No module named 'urllib2'
    python+Eclipse+pydev环境搭建
    python-正则表达式基础
    [转]SpringMVC Controller介绍及常用注解
    【Android自学日记】搭建Android开发环境
  • 原文地址:https://www.cnblogs.com/python-wen/p/10776401.html
Copyright © 2011-2022 走看看