gawk快速入门
基本定义:
gawk 的主要功能是针对文本的每一行执行被指定的 actions。
命令格式:
gawk option program file
option:
-F 指定的分隔符,默认的分隔符是空格,可以指定多个分隔符,例如-F ":|;|.",就是以:或者;或者.为分隔符。
-f program file
-mf 要处理的最大字段数
-mr 数据文件中的最大数据行数
program:
可以是用'{}'括起来的程序脚本或者使用-f program指明的程序脚本文件。
例如'{print "hello world!"}',若有多个脚本语句,则语句间使用;隔开,例如'{print "hello world!"; print "hello world again!"}'
file
输入文件的路径,通常我们也可以通过管道输入而不是用文件。
BEGIN和END
正常情况下,gawk脚本是对行做处理,若我们希望对行做处理或者后做些什么事情,那么我们可以使用BEGIN关键字和END关键字,例如:
gawk ‘BEGIN{print "Begin:"}{print "Processing ...$0"}END{print "End"}’
该程序只会在开头和结尾打印Begin和end,中间会打印Processing ...所有行。
程序语法
内建变量:(gawk引用变量是不加$)
FS 输入字段分割符,同-F
OFS 输出字段分隔符
RS 输入数据行分隔符
ORS 输出数据行分隔符
FIELDWIDTHS 输入字段每个字段的长度,例如:gawk 'BEGIN{FIELDWIDTHS="2 4 5 6"}{print $1 $2 $3 $4}'
ARGC 当前命令行参数个数
NF 字段总数
RF 数据行数
自定义变量
gawk的变量没有类型,变量名由字母、数字及下划线组成,但不能以数字开头,大小写敏感。
字符串用双引号括起来,数字则可直接赋值。gawk 'BEGIN{test="this is a test"; print test; test=100; print test}'
有时我们希望把变量传递进去gawk,我们可以在gawk脚本命令行上直接加上变量的定义,例如gawk '{test="this is a test"; print test; print test2}' test2=200;这样test2就被传递进去了,注意test2要放在后面。可是这种方法有个问题,该test2在BEGIN程序脚本中不生效,要想其生效,可以gawk -v test2=200 'BEGIN{test="this is a test"; print test; print test2}' ,注意:-v要放在前面。
数组变量
待续
gawk快速入门的更多相关文章
- Web Api 入门实战 (快速入门+工具使用+不依赖IIS)
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...
- SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)
SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...
- 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)
今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...
- 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- Mybatis框架 的快速入门
MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...
- grunt快速入门
快速入门 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用.:奇数版本 ...
- 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- 【第四篇】ASP.NET MVC快速入门之完整示例(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
随机推荐
- url中参数以及callback后面的串
最近在写一个京东的爬虫,在模拟其http请求访问评论时,遇到http://club.jd.com/productpage/p-1419543-s-0-t-0-p-0.html?callback=jQu ...
- PHP 开发的 API 多版本管理实践
遇到的情况 本文针对移动互联网客户端需要兼容旧版的情况,强制升级到最新版本的 app 不在讨论之列. 在 bugtags.com 项目中,我们的版本遵循下面规范.1.0.1大功能.小更新.bug 修正 ...
- (转)DataGridView多维表头及其扩展功能
dataGridView1.RowHeadersVisible = false;把整行选中那一列去掉.如果需要整行选中,新增一按钮列模拟实现.上源码:多维DataGridView 有个简易的方法: 1 ...
- 保持const和non-const函数代码的一致
在用C++进行面向对象编程的时候,有时需要在一个类里包含两个代码相似的函数,而它们之间的唯一区别是,一个为const类型,一个是non-const类型. 此时如果将相同的代码写在两个函数中,则严重违反 ...
- Linux 服务器的网络配置 - 2. 查看 Linux 服务器的进程
2. 查看 Linux 服务器的进程 1)ps [主要选项] -a 显示系统中所有进程的信息 -e 显示所有进程的信息 -f 显示进行的所有信息 -l 以长格式显示进程信息 -r 只显示正 ...
- I2C控制器的Verilog建模之一
前言:之前申请了ADI公司的一款ADV7181CBSTZ的视频解码芯片,正好原装DE2板子安的是同系列的ADV7181BBSTZ.虽然都是ADV7181的宗出,但是寄存器配置等等还是有些诧异,引脚也不 ...
- WCF使用小结:(1)WCF接收HTTP POST数据的处理方法
在WCF 4.0中,为我们创建Restful API有了更好的支持.通过定义UriTemplate,WebInvoke就可以快速开发API接口. 这里我记录一下HTTP POST数据时要如何接收POS ...
- linux服务器下添加字体
版权声明:本文为楼主原创文章,未经楼主允许不得转载,如要转载请注明来源. 引言:这两天在开发一个动态生成海报的东西(图片拼接,图片水印),开发在windows下没有问题,图片和文字都能正常的生成出来. ...
- AtomicInteger
原子量和普通变量相比,主要体现在读写的线程安全上.对原子量的写是原子的,由CAS操作保证原子性.对原子量的读可以读到最新值,由volatile关键字来保证可见性. ublic class Atomic ...
- delphi Tab Item Badge Value 消息数标记
https://community.embarcadero.com/blogs?view=entry&id=9074 unit TabBadgeFrm; interface uses Syst ...