1 / 20
文档名称:

Awk学习笔记.doc

格式:doc   大小:146KB   页数:20页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Awk学习笔记.doc

上传人:龙的传人 2022/2/24 文件大小:146 KB

下载得到文件列表

Awk学习笔记.doc

相关文档

文档介绍

文档介绍:Awk学****笔记
Awk学****笔记
2 / 20
Awk学****笔记
Awk学****笔记
Table of Contents
1. awk简介
2。 awk命令格式和选项
. awk的语法有两种形式
2。2. 命令选项
3awk ’/root/' test,或$ awk ’$3 〈 100' test。
两者是可选的,如果没有模式,则action应用到全部记录,如果没有action,则输出匹配全部记录。默认情况下,每一个输入行都是一条记录,但用户 可通过RS变量指定不同的分隔符进行分隔。
3.1. 模式
Awk学****笔记
Awk学****笔记
4 / 20
Awk学****笔记
模 式可以是以下任意一个:
/正则表达式/: 使用通配符的扩展集。
关系表达式:可以用下面运算符表中的关系运算符进行操作,可以是字符串或数字的比较, 如$2>%1选择第二个字段比第一个字段长的行。
模式匹配表达式:用运算符~(匹配)和~!(不匹配).
模 式,模式:指定一个行的范围。该语法不能包括BEGIN和END模式。
BEGIN:让用户指定在第一条输入记录被处理之 前所发生的动作,通常可在这里设置全局变量。
END:让用户在最后一条输入记录被读取之后发生的动作.
3。2。 操作
操 作由一人或多个命令、函数、表达式组成,之间由换行符或分号隔开,并位于大括号内。主要有四部份:
变量或数组赋值
输出命令
内 置函数
控制流命令
4. awk的环境变量
Table 1。 awk的 环境变量
变 量
描述
$n
当前记录的第n个字段,字段间由 FS分隔。
$0
完整的输入记录。
ARGC
命 令行参数的数目。
ARGIND
命令行中当前文件的位置(从0开始算)。
ARGV
包 含命令行参数的数组。
CONVFMT
数字转换格式(默认值为%.6g)
ENVIRON
环 境变量关联数组.
ERRNO
最后一个系统错误的描述.
FIELDWIDTHS
字 段宽度列表(用空格键分隔)。
当前文件名。
FNR
同 NR,但相对于当前文件。
FS
字段分隔符(默认是任何空格).
IGNORECASE
如 果为真,则进行忽略大小写的匹配。
Awk学****笔记
Awk学****笔记
5 / 20
Awk学****笔记
变 量
描述
NF
当前记录中的字段数。
NR
当 前记录数.
OFMT
数字的输出格式(默认值是%.6g).
OFS
输 出字段分隔符(默认值是一个空格)。
ORS
输出记录分隔符(默认值是一个换行符)。
RLENGTH
由 match函数所匹配的字符串的长度.
RS
记录分隔符(默认是一个换行符)。
RSTART
由 match函数所匹配的字符串的第一个位置.
SUBSEP
数组下标分隔符(默认值是\034)。
5. awk运算符
Table 2。 运算符
运 算符
描述
= += —= *= /= %= ^= **=
赋值
?:
C条件表达式
||
逻 辑或
&&
逻辑与
~ ~!
匹 配正则表达式和不匹配正则表达式
〈 <= > 〉= != ==
关 系运算符
空格
连接
+ -
加,减
* / &
乘,除与求余
+ - !
一元加,减和逻辑非
^ ***
求幂
++ --
增加或减少,作为前缀或后缀

字 段引用
in
数组成员
6. 记录和域
。 记录
awk 把每一个以换行符结束的行称为一个记录。
Awk学****笔记
Awk学****笔记
6 / 20
Awk学****笔记
记录分隔符:默认的输入和输出的分隔符都是回车,保存在内建变量ORS和RS中。
$0 变量:$ awk '{print $0}' test将输出test文件中的所有记录。
变量NR:一个计数器,每处 理完一条记录,NR的值就增加1。如$ awk '{print NR,$0}' test将输出test文件中所有记录,并在记录前显示记录号.
6。2。 域
记 录中每个单词称做“域”,,并在内建变量NF中保存该值。如$ awk ’{print $1,$3}’ test将打印test文件中第一和第三个以空格分开的列(域)。
6。3. 域分隔符
内建变量 FS保存输入域分隔符的值,默认是空格或tab。我们可以通过—$ awk —F: '{print $1,$5}' test将打印以冒号为分隔符的第一,第五列的内容.
可以同时使用多个域分隔符,这时应该把分隔符写成放到