点击返回 自学Linux命令行与Shell脚本之路

19.1-gawk程序基础特性

linux世界中最广泛使用的两个命令行编辑器:

  • sed
  • gawk

1. gawk概念

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。

  • 定义变量来保存数据
  • 使用算术和字符串操作符来处理数据
  • 使用结构化编程概念来为数据处理增加处理逻辑
  • 通过提取数据文件中的数据元素,将其重新排列或格式化,生成格式化报告

gawk的报告生成能力通常用来从大文本文件中提取数据元素,并将它们格式化成可读 的报告,完美的例子是格式化日志文件。

在所有的发行版中都没有默认安装gawk程序。

2. gawk格式化

 awk '{pattern + action}' {filenames}
  • -F fs 指定行中划分数据字段的字段分隔符
  • -f progfile 从指定的文件中读取程序
  • -v var=value 定义gawk程序中的一个变量及其默认值
  • -mf N 指定要处理的数据文件中的最大字符段数
  • -mr N 指定数据文件中的最大数据行数
  • -w keyword 指定gawk的兼容模式或告警等级

gawk强大之处在于可以写脚本来读取文本行的数据,然后处理并显示数据。

2.1 从命令行读取程序脚本

必须将脚本命令放到两个花括号{ } 中。

以上运行gawk’{print"hello word"}‘不会有任何反应,print命令会将文本打印到STDOUT,但没有在命令行上指定文件名,所以gawk只会从STDIN接收数据。
若输入一个文本并按下回车键,不管你在数据流中输入什么,都会得到同样的输出hello word 。
ctrl+D组合键会在bash中产生一个EOF字符,便是数据流已经结束。

2.2 使用数据字段变量

gawk会自动给一行中的每个数据元素分配一个变量,默认情况下,会将如下变量分配给它在文本行中发现的数据字段:

  • $0代表整个文本;
  • $1代表文本行中的第一个数据字段;
  • $2代表文本行中第二个字段;
  • $n代表文本行中第N个字段
  • 每个数据字段是通过字段分隔符划分的,默认字段分割符是任意的空白字符(如空格或制表符)。

2.3 在程序脚本中使用多个命令

如果要在命令行的脚本中使用多条命令,只要在命令之间放个分号;即可

2.4 从文本中读取程序

  • 允许将程序储存在文件中,然后在命令行中引用。
  • 可以在文件中指定多条命令,只要一条命令放一行就可以,不需要使用分号。

2.5 从处理数据前/处理数据后运行脚本

默认情况,gawk会从输入中读取一行文本,然后针对该行的数据执行程序脚本,但有时可能需要在处理数据前或数据后运行脚本:

  • BEGIN关键字,强制gawk在读取数据前执行BEGIN关键字后指定的程序脚本
  • END关键字,gawk在读完数据之后执行END关键字后的程序

自学Linux Shell19.1-gawk程序基础特性的更多相关文章

  1. 自学Linux Shell19.2-gawk程序高级特性

    点击返回 自学Linux命令行与Shell脚本之路 19.2-gawk程序高级特性 linux世界中最广泛使用的两个命令行编辑器: sed gawk 1. gawk使用变量 编程语言共有的特性是使用变 ...

  2. 自学Linux Shell4.1-监测程序ps top kill

    点击返回 自学Linux命令行与Shell脚本之路 4.1-监测程序ps top kill 1. PS命令 linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的 ...

  3. Linux上bash的部分基础特性:

    命令补全: tab shell程序在接收到用户执行命令的请求,分析完成后,最左侧的字符串会被当做命令 命令查找机制: 查找内部命令: 根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名 ...

  4. 自学Linux命令行与Shell脚本之路

    自学Linux命令行与Shell脚本之路[第一回]:初识Linux   1.1 自学Linux Shell1.1-Linux初识 1.2 自学Linux Shell1.2-Linux目录结构 1.3  ...

  5. 自学Linux Shell18.1-sed编辑器基础特性

    点击返回 自学Linux命令行与Shell脚本之路 18.1-sed编辑器基础特性 linux世界中最广泛使用的两个命令行编辑器: sed gawk 1. sed概念 sed是stream edito ...

  6. linux文件系统及bash基础特性

    linux文件系统 一.根文件系统 linux被识别的第一个被称为根之间关联的文件系统叫做根文件系统(rootfs),其他分区要想被读到,需要挂载到根目录的某个挂载点(根的子目录)上.根文件系统至关重 ...

  7. 自学Linux Shell9.1-安装软件程序

    点击返回 自学Linux命令行与Shell脚本之路 9.1-linux安装软件程序 PMS利用一个数据库来记录各种相关内容: Linux系统安装了什么软件包 每个包安装什么文件 每个已安装软件包的版本 ...

  8. 自学Linux Shell18.2-sed编辑器高级特性

    点击返回 自学Linux命令行与Shell脚本之路 18.2-sed编辑器高级特性 linux世界中最广泛使用的两个命令行编辑器: sed gawk 1. sed小结 命令格式: 1 sed [opt ...

  9. linux基础(2)-基础命令和基础特性

    基础命令 命令历史 命令历史的管理 登陆 shell 时,会读取命令历史文件中记录下的命令: ~/.bash_history . 登陆进 shell 后,新执行的命令只会记录在缓存中,这些命令会在用户 ...

随机推荐

  1. CSS-Photoshop投影与CSS中box-shadow的转换

    box-shadow是给元素块添加周边阴影效果基本语法是: {box-shadow:[inset] x-offset y-offset blur-radius spread-radiuscolor} ...

  2. PowerDesign 16.0 生成的SQL Server2000 数据库脚本时MS_Description不存在的问题解决

    根据网上查询到的资料,找到了解决方法,原文出自:http://www.cnblogs.com/24tt/p/5047257.html PowerDesign 16.0 生成的Script语句,Sql2 ...

  3. 2091: [Poi2010]The Minima Game

    2091: [Poi2010]The Minima Game 链接 分析: 首先排序后,一定是选的连续的一段. f[i]表示前i个位置,先手-后手的最大得分. 那么考虑第i个位置是否选,如果选,先手选 ...

  4. [HAOI2017]供给侧改革[离线、trie]

    题意 题目链接 分析 由于数据随机所以 LCP 不会很长,维护每个位置后 40 个字符构成的01串. 将询问离线维护,以当前右端点为 R 的每个长度的 LCP 的第一个出现位置 f(这个信息显然是单调 ...

  5. JAVA消息确认机制之ACK模式

    JMS API中约定了Client端可以使用四种ACK模式,在javax.jms.Session接口中: AUTO_ACKNOWLEDGE = 1    自动确认 CLIENT_ACKNOWLEDGE ...

  6. 生活沉思录 via 哲理小故事(一)

    1.小托蒂的悲剧 意大利小男孩托蒂,有一只十分奇怪的眼睛,因为从生理上看,这是一只完全正常的眼睛,但却是失明的. 原来,托蒂刚出生时,这只眼睛轻度感染,曾用绷带缠了两个星期.这对常人来说几乎没有人任何 ...

  7. Webpack 2 视频教程 001 - Webpack 简介

    这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲解的. 这个基本就是目前 ...

  8. Nginx基于TCP/UDP端口的四层负载均衡(stream模块)配置梳理

    通过我们会用Nginx的upstream做基于http/https端口的7层负载均衡,由于Nginx老版本不支持tcp协议,所以基于tcp/udp端口的四层负载均衡一般用LVS或Haproxy来做.至 ...

  9. tomcat相关配置技巧梳理 (修改站点目录、多项目部署、限制ip访问、大文件上传超时等)

    tomcat常用架构:1)nginx+tomcat:即前端放一台nginx,然后通过nginx反向代理到tomcat端口(可参考:分享一例测试环境下nginx+tomcat的视频业务部署记录)2)to ...

  10. hive基础操作—(1)

    执行./hive命令后,进入CLI(shell)模式: 1.创建数据库,语句: create database school; 2.展示所有的数据库,语句: show databases; 3.选择使 ...