第4章 awk编程
1 awk编程模型

2 awk用法
调用awk有三种方法(与sed类似):
- 在Shell命令行输入命令调用awk,格式为:
awk [-F 域分隔符] ‘awk程序段’ 输入文件
- 将awk程序段插入脚本文件后,然后通过awk命令调用它:
awk -f awk脚本文件输入文件
- 将awk命令插入脚本文件后,最常用的方法是设置该脚本文件为可执行,然后直接执行该脚本文件,格式为:
./awk脚本文件输入文件
注:第二种方法脚本文件的首行不以#!/bin/awk –f开头;第三种方法脚本文件的首行是#!/bin/awk –f
3 awk编程示例
3.1 awk模式匹配
awk语句由模式(pattern)和动作(action)组成。模式决定动作何时触发和触发事件,动作执行对输入行的处理。

模式部分:^$,是正则表达式,表示空白行;
动作部分:花括号中的部分,打印操作。
3.2 记录和域
awk认为输入文件是结构化的,awk将每个输入文件行定义为记录,行中的每个字符串定义为域,域之间用空格、Tab键或其他符号进行分割,分割域的符号就叫分隔符。

打印第一、二哥域

3.3 关系和布尔运算符
关系运算符
|
运算符 |
意义 |
|
< |
小于 |
|
> |
大于 |
|
<= |
小于等于 |
|
>= |
大于等于 |
|
== |
等于 |
|
!= |
不等于 |
|
~ |
匹配正则表达式 |
|
!~ |
不匹配正则表达式 |
布尔运算符
|
运算符 |
意义 |
|
|| |
逻辑或 |
|
&& |
逻辑与 |
|
! |
逻辑非 |
打印/etc/passwd中第一个域匹配root关键字的记录

3.4 表达式
|
运算符 |
意义 |
|
+ |
加 |
|
- |
减 |
|
* |
乘 |
|
/ |
除 |
|
% |
模 |
|
^或** |
乘方 |
|
++x |
在返回x值之前,x变量加1 |
|
x++ |
在返回x值之后,x变量加1 |
3.5 格式化输出
awk借鉴C语言的语法,定义了printf输出语句,它可以规定输出的格式
|
修饰符 |
意义 |
|
- |
左对齐 |
|
width |
域的步长 |
|
.prec |
小数点右边的位数 |
|
运算符 |
意义 |
|
%c |
ASCII字符 |
|
%d |
整型数 |
|
%e |
浮点数,科学记数法 |
|
%f |
浮点数 |
|
%o |
八进制数 |
|
%s |
字符串 |
|
%x |
十六进制数 |
打印第一个域的内容

第4章 awk编程的更多相关文章
- 《深入浅出Node.js》第7章 网络编程
@by Ruth92(转载请注明出处) 第7章 网络编程 Node 只需要几行代码即可构建服务器,无需额外的容器. Node 提供了以下4个模块(适用于服务器端和客户端): net -> TCP ...
- 《深入浅出Node.js》第4章 异步编程
@by Ruth92(转载请注明出处) 第4章 异步编程 Node 能够迅速成功并流行起来的原因: V8 和 异步 I/O 在性能上带来的提升: 前后端 JavaScript 编程风格一致 一.函数式 ...
- [CSAPP笔记][第十二章并发编程]
第十二章 并发编程 如果逻辑控制流在时间上是重叠,那么它们就是并发的(concurrent).这种常见的现象称为并发(concurrency). 硬件异常处理程序,进程和Unix信号处理程序都是大家熟 ...
- [CSAPP笔记][第十一章网络编程]
第十一章 网络编程 我们需要理解基本的客户端-服务端编程模型,以及如何编写使用因特网提供的服务的客户端-服务端程序. 最后,我们将把所有这些概念结合起来,开发一个小的但功能齐全的Web服务器,能够为真 ...
- CSAPP:第十二章 并发编程
CSAPP:第十二章 并发编程 12.1 线程执行模型12.2 多线程之间并发通信12.3 其他并发问题 使用应用级并发的应用程序称为并发程序.现代操作系统提供三种基本的构造并发程序的方法: 进程 ...
- CSAPP:第十一章 网络编程
CSAPP:第十一章 网络编程 11.1 客户端服务器模型11.2 全球IP因特网11.3 套接字接口 11.1 客户端服务器模型 每个网络应用都是基于客户端-服务器模型.采用这个模型,一个应用是 ...
- [Real World Haskell翻译]第23章 GUI编程使用gtk2hs
第23章 GUI编程使用gtk2hs 在本书中,我们一直在开发简单的基于文本的工具.虽然这些往往是理想的接口,但有时图形用户界面(GUI)是必需的.有几个Haskell的GUI工具包是可用的.在本章中 ...
- 第一章 C++编程基础
第一章 C++编程基础 1.1 如何撰写C++程序 赋值 assignment复合赋值 (compound assignment) += 函数(function)是一块独立的程序代码序列(code s ...
- 《Python 3.5从零开始学》笔记-第8章 面向对象编程
前几章包括开启python之旅.列表和元组.字符串.字典.条件和循环等语句.函数等基本操作.主要对后面几章比较深入的内容记录笔记. 第8章 面向对象编程 8.3深入类 #!/usr/local/bin ...
随机推荐
- [系统开发] FileMaker进销存系统
一.简介 这是我用 FileMaker 编写的进销存系统: FileMaker 是一种在欧美流行的桌面型数据库:它使用非常方便,功能也很强大,用户可以在它上面开发自己的系统: 开发时间:2008年 二 ...
- VS 使用Sql Server 数据库增删改查
/// <summary> /// 执行查询语句,返回DataSet /// </summary> /// <param name="SQLString&quo ...
- Nginx_地址重写(rewrite)_日志管理(log_format)_压缩输出_Nginx设定限速_Nginx设置反向代理及反向代理缓存
Nginx地址重写 Nginx rewrite rewrite语法规则1).变量名可以使用 "=" 或 "!=" 运算符~ 区分大小写~* 不区分大小写^~ 禁 ...
- PLSQL_性能优化工具系列10_Automatic Database Diagnostic Monitor - ADDM
2014-09-06 Created By BaoXinjian
- EditText获取焦点显示输入法时布局自动改变的解决方案
最近在调试Android时,发现当屏幕下方的EditText获取焦点,显示输入法时候.页面布局重新调整而不是整体上移.导致部分控件显示不完全. 最终解决方案是修改项目AnroidManifest.xm ...
- MODBUS-RTU学习
一 RTU比ASCII传输密度高.参数格式:起始位+8BITS数据位+校验位+停止位. 1.1校验默认为偶校验,建议为无校验,测试要多1个停止位(即停止位为2位) 1.2发送顺序为从左到右LSB-&g ...
- iOS学习笔记总结整理
来源:http://mobile.51cto.com/iphone-386851_all.htm 学习IOS开发这对于一个初学者来说,是一件非常挠头的事情.其实学习IOS开发无外乎平时的积累与总结.下 ...
- js实现加减乘除
/** ** 除法函数,用来得到精确的除法结果 ** 说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显.这个函数返回较为精确的除法结果. ** 调用:accDiv(arg ...
- 更换ubuntu apt-get 源
为了优化ubuntu软件安装/更新速度,我测试了国内几家apt源的速度,发现北京交大的apt源速度相对最快,然后可以通过以下步骤更新ubuntu源 1) 备份默认的apt源 $ cd /etc/apt ...
- C++学习43 输入输出有关的类和对象
输入和输出是数据传送的过程,数据如流水一样从一处流向另一处.C++形象地将此过程称为流(Stream).C++的输入输出流是指由若干字节组成的宇节序列,这些宇节中的数据按顺序从一个对象传送到另一对象. ...