第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


十六进制数

打印第一个域的内容

时间: 2024-08-24 07:38:42

第4章 awk编程的相关文章

第四章 shell学习之sed命令和awk编程

sed命令 sed只是对缓冲区中原始文件的副本进行编辑,不改变源文件,所以要保存则要重定向到另一个文件 sed三种方式: 1.sed [选项] 'sed命令' 输入文件 2.sed [选项] -f sed脚本文件 输入文件 3../sed脚本文件 输入文件 其中3的sed脚本文件要以#! bin/sed -f等开头 选项: -n 不打印所有行到标准输出,默认先打印匹配的再打印所有 -e 关联多个sed命令 -f 调用sed脚本文件 定位文本: x x为指定行号 x,y 从x到y行 /patter

第十九章 文本处理流编辑器:awk编程

第十九章 文本处理流编辑器:awk编程 名词解释 awk 是一种编程语言,用于linux/unix下对文本和数据进行处理.数据可以来自标准输入(stdin).一个或多个文件.或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大个编程工具.它在命令行中使用,但更多是作为脚本来使用.awk有很多内建的功能,比如:数组.函数等,这是它和C语言的相同之处,灵活性是awk最大的优势. awk命令格式和选项 语法形式 awk [option] 'script'

linux awk命令详解 --awk编程

简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本. awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK

第三章 网络编程

终于学到网络编程了! 先上图和程序: 这是今天写的TCP的实现 服务器和客户端分别在两台电脑 这是服务器图: 这是服务器程序: 1 #-*- coding:utf-8 -*- 2 from socket import * #导入socket所有属性 3 from time import ctime #导入ctime() 4 5 6 host = '' #HOST 变量为空,表示bind()函数可以绑定在所有有效的地址上. 7 port = 21000 #设置端口 8 bufsize = 1024

第十七章 路由交换机编程

                第十七章    路由交换机编程 MTU = 64KB 毕竟是理想,现阶段实现起来还是有难度:牵涉到较多问题,与大网同步.流量平衡.时隙交换等.所以,APO还是决定MTU = 48E = 1536B,包含头部2E.帧同步头8B.尾部CRC的4B等:数据包的有效内容(不含头部)为45E = 1440B.头部2E = 64B,其中MAC头14B.IP头18B.TCP/UDP/ICMP头32B. 二层交换机是以存储转发为主设计,三层以上的交换机是以256位差分总线的时隙交

第12章-Swing编程 --- Swing中的特殊容器--JSplitPane

(一)使用JSplitPane JSplitPane用于创建一个分割板,它可以将一个组件(通常是一个容器)分割成两个部分,并提供一个分割条.用户可以拖动该分隔条来调整两个部分的大小.分隔面板的实质是一个特殊容器,该容器只能容纳两个组件,而且分割面板又分为上下分割.左右分割两种情形. 创建分割面板的代码如下: new JSplitPane(方向,左/上组件,右/下组件); JSplitPane分割面板提供了如下几个方法: (1)setDividerLocation(double proportio

第12章-Swing编程 --- 使用JProgressBar、ProgressMonitor和BoundedRangeModel创建进度条

第12章-Swing编程 --- 使用JProgressBar.ProgressMonitor和BoundedRangeModel创建进度条 (一)创建进度条 使用JProgressBar,可以很方便的创建进度条,其步骤如下: (1)创建一个JProgressBar对象,创建该对象时也可以指定3个参数,用于设置进度条的排列方向(竖直和水平).进度条的最大值和最小值.也可以在创建该对象时不传入任何参数,而是在后面程序中修改这3个属性. 下面代码创建了JProgressBar对象 //创建一条垂直进

第12章-Swing编程 --- 使用JToolBar创建工具条

Swing提供了JToolBar类来创建工具条,创建JToolBar对象时可以指定如下两个参数: -->name: 该参数指定该工具条的名称. -->orientation:该参数指定该工具条的方法. JToolBar对象还有如下几个常用方法: -->JButton add(Action a): 通过Action对象为JToolBar添加对应的工具按钮. -->void addSeparator(Dimension size):向工具条中添加指定大小的分隔符. -->void

[CSAPP笔记][第十二章并发编程]

第十二章 并发编程 如果逻辑控制流在时间上是重叠,那么它们就是并发的(concurrent).这种常见的现象称为并发(concurrency). 硬件异常处理程序,进程和Unix信号处理程序都是大家熟悉的例子. 我们主要将并发看做是一种操作系统内核用来运行多个应用程序的机制. 但是,并发不仅仅局限于内核.它也可以在应用程序中扮演重要的角色. 例如 Unix信号处理程序如何允许应用响应异步事件 例如:用户键入ctrl-c 程序访问虚拟存储器的一个未定义的区域 其他情况 访问慢速I/O设备 当一个应