一、awk简介

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

  awk 是一种很棒的语言,它适合文本处理和报表生成,其语法较为常见,借鉴了某些语言的一些精华,如 C 语言等。在 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】

awk从放弃到入门(1):awk基础的更多相关文章

  1. awk从放弃到入门(3):awk变量

    一.变量概述 对于awk来说"变量"又分为"内置变量" 和 "自定义变量" , "输入分隔符FS"和"输出分隔 ...

  2. awk从放弃到入门(2):awk分隔符

    一.awk分隔符 awk的默认分割符是空格,但是,这样描述并不精确,因为,awk的分隔符还分为两种,"输入分隔符" 和 "输出分隔符" . (1)输入分隔符:英 ...

  3. awk讲义-1-快速入门

    awk讲义-1-快速入门 一.目标问题: 1.统计各个省份中城市的数量(一维数组) 2.统计城市中区县数量,要求输出格式:省份 城市 区县数量(二维数组) 3.求两个文件的交集 4.省市和市区两个文件 ...

  4. awk 用法(使用入门)

    转自:http://www.cnblogs.com/emanlee/p/3327576.html awk 用法:awk ' pattern {action} '  变量名    含义 ARGC   命 ...

  5. 大数据入门第一天——基础部分之Linux基础(环境准备与先导知识)

    一.Linux环境安装 1.VM的安装 参考Linux环境搭建随笔:http://www.cnblogs.com/jiangbei/p/7248054.html 2.CentOS的安装 同参考上述随笔 ...

  6. CTF入门指南(0基础)

    ctf入门指南 如何入门?如何组队? capture the flag 夺旗比赛 类型: Web 密码学 pwn 程序的逻辑分析,漏洞利用windows.linux.小型机等 misc 杂项,隐写,数 ...

  7. Membership三步曲之入门篇 - Membership基础示例

    Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 -  Membership基础示例 Membership三步曲之进阶篇 -  深入剖析Pro ...

  8. 快速入门系列--WebAPI--01基础

    ASP.NET MVC和WebAPI已经是.NET Web部分的主流,刚开始时两个公用同一个管道,之后为了更加的轻量化(WebAPI是对WCF Restful的轻量化),WebAPI使用了新的管道,因 ...

  9. [转]Membership三步曲之入门篇 - Membership基础示例

    本文转自:http://www.cnblogs.com/jesse2013/p/membership.html Membership三步曲之入门篇 - Membership基础示例   Members ...

随机推荐

  1. ASP.NET常用内置对象(三)Server

    Server对象是HttpServerUtility的一个实例,也是上下文对象HttpContext的一个属性,提供用于处理Web请求的Helper方法. Server.MapPath("& ...

  2. JavaScript-事件类型

    DOM3事件类型: 1.UI事件:当用户与页面上的元素交互时触发 a.DOMActivate:元素已经被用户操作激活. b.load:(1)页面完全加载:window触发. (2)所有框架加载完毕:框 ...

  3. maven配置文件pom.xml小记

    1.pom.xml主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素 2.基础设置: <modelV ...

  4. windows 环境变量%SystemDrive%和%SystemRoot%、%AppData%、%LocalAppData%、%TEMP% 等简写

    windows 环境变量%SystemDrive% 和%SystemRoot%.%AppData%.%LocalAppData%.%TEMP% 等简写 假设操作系统安装在 C: 盘 %SYSTEMRO ...

  5. Quartz.NET 2.x教程

    第1课:使用Quartz第2课:工作和触发器第3课:关于工作和JobDetails的更多信息第4课:有关触发器的更多信息第5课:SimpleTriggers第6课:CronTriggers第7课:Tr ...

  6. Wannafly Camp 2020 Day 6I 你吓到我的马了.jpg - BFS

    暴力BFS即可 #include <bits/stdc++.h> using namespace std; int n,m,f[105][105]; char s[105][105]; s ...

  7. Python中pip的使用

    1.pip安装模块 pip install 模块名称 -i 安装源 pip install requests -i https://mirrors.aliyun.com/pypi/simple/

  8. 销量下跌、质量问题不断,小鹏G3“维权门”之后的日子不好过

    编辑 | 于斌 出品 | 于见(ID:mpyujian) 小鹏汽车何时能站上国内新能源汽车行业C位?这是于见之前提出过的问题.随着上个月小鹏汽车终于发布了2020款小鹏G3,从该款产品的用户反馈及销量 ...

  9. Docker最全教程——从理论到实战(九)

    使用Tencent Hub来完成CI 关于Tencent Hub Tencent Hub是腾讯出品的DevOps服务.主要提供多存储格式的版本管理,支持Docker Image.Binary.Helm ...

  10. 白面系列 mongoDB

    mongoDB和redis一样,都是noSQL技术之一. redis是Key-Value存储,mongoDB是文档存储. 文档存储一般用类似json的格式存储,存储的内容是文档型的.文档是一组键值(k ...