awk学习笔记八-Actions
原文: http://doc.lazyhack.net/awk.htm
Actions
Actions 是由下列指令(statement)所组成 :
- 表达式 ( function calls, assignments..)
- print 表达式列表
- printf( 格式化字符串, 表达式列表)
- if( 表达式 ) 语句 [else 语句]
- while( 表达式 ) 语句
- do 语句 while( 表达式)
- for( 表达式; 表达式; 表达式) 语句
- for( variable in array) 语句
- delete
- break
- continue
- next
- exit [表达式]
- 语句
awk 中大部分指令与 C 语言中的用法一致, 此处仅介绍较为常用或容易混淆的指令的用法.
close 指令
该指令用以关闭一个打开的文件, 或 pipe (见下例)
范 例 :
BEGIN { print "ID # Salary" > "data.rpt" }
{ print $1 , $2 * $3 | "sort -k 1 > data.rpt" }
END{ close( "data.rpt" )
close( "sort -k 1 > data.rpt" )
print " There are", NR, "records processed."
}
说 明 :
(a)上例中, 一开始执行 print "ID # Salary" > "data.rpt" 指令来输出一行抬头. 它使用 I/O Redirection ( > )将数据转输出到data.rpt,故此时文件 data.rpt 是处於 Open 状态.
(b)指令 print $1, $2 * $3 不停的将输出的资料送往 pipe(|), awk在程序将结束时才会呼叫 shell 使用指令 "sort -k 1 > data.rpt" 来处理 pipe 中的数据; 并未立即执行, 这点与 Unix 中pipe的用法不尽相同.
(c)最后希望於文件 data.rpt 的末尾处加上一行 "There are.....".但此时, Shell尚未执行 "sort -k 1 > data.rpt" 故各数据行排序后的 ID 及 Salary 等数据尚未写入data.rpt. 所以得命令 awk 提前先通知 Shell 执行命令 "sort -k 1 > data.rpt" 来处理 pipe 中的资料. awk中这个动作称为 close pipe. 是由执行 close ( "shell command" )来完成. 需留心 close( )指令中的 shell command
需与"|"后方的 shell command 完全相同(一字不差), 较佳的方法是先以该字串定义一个简短的变量, 程序中再以此变量代替该shell command
(d)为什么执行 close("data.rpt") ? 因为 sort 完后的资料也将写到data.rpt,而该文件正为awk所打开使用(write)中, 故awk程式中应先关闭data.rpt. 以免造成因二个 processes 同时打开一个文件进行输出(write)所产生的错误.
system 指令
该指令用以执行 Shell上的 command.
范 例 :
DataFile = "invent.rpt"
system( "rm " DataFile )
说明 :
(a)system("字符串")指令接受一个字符串当成Shell的命令. 上例中, 使用一个字串常数"rm " 连接(concate)一个变量 DataFile 形成要求 Shell 执行的命令.Shell 实际执行的命令为 "rm invent.rpt".
"|" pipe指令
"|" 配合 awk 输出指令, 可把 output 到 stdout 的资料继续转送给Shell 上的某一命令当成input的资料.
"|" 配合 awk getline 指令, 可呼叫 Shell 执行某一命令, 再以 awk 的 getline 指令将该命令的所产生的资料读进 awk 程序中.
范 例 :
{ print $1, $2 * $3 | "sort -k 1 > result" }
"date" | getline Date_data
转载于:https://blog.51cto.com/360537539/713557
awk学习笔记八-Actions相关推荐
- awk学习笔记(10) - 数组
awk中的数组 awk中的数组跟php中的很像,使用前都不需要声明,都可以用字符串做下标. 我们创建一个reg.dat文件来记录用户选修的课程: Mary O.S. Arch. Discrete St ...
- ReactJS学习笔记八:动画
ReactJS学习笔记八:动画 分类: react学习笔记 javascript2015-07-06 20:27 321人阅读 评论(0) 收藏 举报 react动画 目录(?)[+] 这里只讨论Re ...
- 【opencv学习笔记八】创建TrackBar轨迹条
createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...
- python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑
python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件? 当我们点开下载页时, 一 ...
- ROS学习笔记八:创建ROS msg和srv
ROS学习笔记八:创建ROS msg和srv 本节主要讲述了如何创建和建立ROS msg和srv,同时使用命令行工具rosmsg.rossrv和roscp. msg和srv简介 msg:描述ROS m ...
- Halcon 学习笔记八:颜色识别
Halcon 学习笔记八:颜色识别 一.图像处理需要的知识 二.图像处理的预处理和分割过程 二.颜色识别的方法 三.例子一 四.例子二 五.例子三 一.图像处理需要的知识 1.图像处理基础(rgb(h ...
- ZooKeeper学习笔记(八):ZooKeeper集群写数据原理
写数据原理 写流程直接请求发送给Leader节点 这里假设集群中有三个zookeeper服务端 ACK (Acknowledge character)即是确认字符,在数据通信中,接收站发给发送站的一种 ...
- MongoDB 学习笔记八 复制、分片、备份与恢复、监控
MongoDB 学习笔记八 复制.分片.备份与恢复.监控 MongoDB复制(副本集) 什么是复制? MongoDB 复制原理 MongoDB 副本集设置 副本集添加成员 MongoDB 分片 分片 ...
- python3第三方库手册_python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑...
python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件? 当我们点开下载页时, 一 ...
最新文章
- 自考计算机本科学校好,自考本科的难度跟选择的专业有关吗?过来人:有很大的关系...
- golang mod 包管理使用 引入本地包
- SQL重置数据表id
- java封装的快捷_Fast-boot:针对SpringBoot 封装的一系列的快捷包
- Storm 02_Storm 计算模型
- gitlab不小心把sign-in取消了怎么恢复
- IT公司笔试题总结(三)
- 学习笔记(16):Python网络编程并发编程-开启子进程的两种方式
- 能不能用python开发qq_用Python写一个模拟qq聊天小程序的代码实例
- NLP 带你分析 —— 扎克伯格在听证会上说了什么?
- 读书笔记五:TCP/IP详解之RARP逆地址解析协议
- Pytorch专题实战——前馈神经网络(Feed-Forward Neural Network)
- UVa1584 - Circular Sequence
- python 人脸识别活体检测_基于Python+Keras+OpenCV实现实时人脸活体检测
- 关于SETUP FACTORY %AppFolder%写入注册表问题
- 高等数学辅导讲义_《高等数学》考研自用框架体系
- mysql mtq_mysql实现远程登录
- 机器学习之K均值(K-Means)算法
- You Only Look One-level Feature
- JQ选择器(标签)学习