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快速入门之安全策 ...
随机推荐
- docker跨容器之使用link大法通信
容器1 docker run --name elixir -it edib/elixir-phoenix-dev /bin/bash ip address看看自己的ip 容器2 docker run ...
- mysql 异步执行 query //@todo
http://stackoverflow.com/questions/27240421/php-asynchronous-mysql-query http://php.net/manual/en/my ...
- Spring4.1新特性——Spring MVC增强
目录 Spring4.1新特性——综述 Spring4.1新特性——Spring核心部分及其他 Spring4.1新特性——Spring缓存框架增强 Spring4.1新特性——异步调用和事件机制的异 ...
- elastic search 配置问题
http://www.elastic.co/guide/en/elasticsearch/guide/current/hardware.html 此处有关于ES硬件规格的建议和各种推荐参数. 内存: ...
- iframe自适应高度(兼容IE 火狐 谷歌)
<div id="leamain"> <iframe src="#" marginheight="0" marginwid ...
- Archlinux 添加无线网络
From: https://wiki.archlinux.org/index.php/Beginners%27_Guide_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%8 ...
- javascript MVC(每天有学习一点篇)
“写的不是代码,是你的思维”,经常觉得自己写的代码“皮粗肉糙”的,看到那些要么精致小巧,要么优雅大方,要么光明磊落的代码时,常常会黯然神伤外加垂涎欲滴. why?(为什么我的代码不能如此..) whe ...
- NHibernate系列文章十二:Load/Get方法
摘要 NHibernate提供两个方法按主键值查找对象:Load/Get. 1. Load/Get方法的区别 Load: Load方法可以对查询进行优化. Load方法实际得到一proxy对象,并不立 ...
- QuerySet创建新对象的方法和获取对象的方法
新建一个对象的方法有以下几种: Person.objects.create(name=name,age=age) p = Person(name="WZ", age=23) p.s ...
- css固定div头部不随滚动条滚动
给div加浮动: position:fixed; 固定宽度,高度,距离头部,左部为0:width: 99%; height: 80px; top:0; left: 0;