原文: 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相关推荐

  1. awk学习笔记(10) - 数组

    awk中的数组 awk中的数组跟php中的很像,使用前都不需要声明,都可以用字符串做下标. 我们创建一个reg.dat文件来记录用户选修的课程: Mary O.S. Arch. Discrete St ...

  2. ReactJS学习笔记八:动画

    ReactJS学习笔记八:动画 分类: react学习笔记 javascript2015-07-06 20:27 321人阅读 评论(0) 收藏 举报 react动画 目录(?)[+] 这里只讨论Re ...

  3. 【opencv学习笔记八】创建TrackBar轨迹条

    createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...

  4. python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件? 当我们点开下载页时, 一 ...

  5. ROS学习笔记八:创建ROS msg和srv

    ROS学习笔记八:创建ROS msg和srv 本节主要讲述了如何创建和建立ROS msg和srv,同时使用命令行工具rosmsg.rossrv和roscp. msg和srv简介 msg:描述ROS m ...

  6. Halcon 学习笔记八:颜色识别

    Halcon 学习笔记八:颜色识别 一.图像处理需要的知识 二.图像处理的预处理和分割过程 二.颜色识别的方法 三.例子一 四.例子二 五.例子三 一.图像处理需要的知识 1.图像处理基础(rgb(h ...

  7. ZooKeeper学习笔记(八):ZooKeeper集群写数据原理

    写数据原理 写流程直接请求发送给Leader节点 这里假设集群中有三个zookeeper服务端 ACK (Acknowledge character)即是确认字符,在数据通信中,接收站发给发送站的一种 ...

  8. MongoDB 学习笔记八 复制、分片、备份与恢复、监控

    MongoDB 学习笔记八 复制.分片.备份与恢复.监控 MongoDB复制(副本集) 什么是复制? MongoDB 复制原理 MongoDB 副本集设置 副本集添加成员 MongoDB 分片 分片 ...

  9. python3第三方库手册_python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑...

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件? 当我们点开下载页时, 一 ...

最新文章

  1. 自考计算机本科学校好,自考本科的难度跟选择的专业有关吗?过来人:有很大的关系...
  2. golang mod 包管理使用 引入本地包
  3. SQL重置数据表id
  4. java封装的快捷_Fast-boot:针对SpringBoot 封装的一系列的快捷包
  5. Storm 02_Storm 计算模型
  6. gitlab不小心把sign-in取消了怎么恢复
  7. IT公司笔试题总结(三)
  8. 学习笔记(16):Python网络编程并发编程-开启子进程的两种方式
  9. 能不能用python开发qq_用Python写一个模拟qq聊天小程序的代码实例
  10. NLP 带你分析 —— 扎克伯格在听证会上说了什么?
  11. 读书笔记五:TCP/IP详解之RARP逆地址解析协议
  12. Pytorch专题实战——前馈神经网络(Feed-Forward Neural Network)
  13. UVa1584 - Circular Sequence
  14. python 人脸识别活体检测_基于Python+Keras+OpenCV实现实时人脸活体检测
  15. 关于SETUP FACTORY %AppFolder%写入注册表问题
  16. 高等数学辅导讲义_《高等数学》考研自用框架体系
  17. mysql mtq_mysql实现远程登录
  18. 机器学习之K均值(K-Means)算法
  19. You Only Look One-level Feature
  20. JQ选择器(标签)学习

热门文章

  1. 记2014“蓝桥杯全国软件大赛quot;决赛北京之行
  2. 《软件测试自动化之道》读书笔记 之 目录导航
  3. 键盘上每个键作用!!! (史上最全的)­
  4. Android animation动画
  5. 五分钟读懂UML类图(转)
  6. 写项目经历的注意事项
  7. springboot 常用插件
  8. bootstrap - navbar
  9. SpringAOP 通知(adivce)- methodIntercepor
  10. 详细解读Android中的搜索框(二)—— Search Dialog