awk命令

来源:互联网 发布:ins社交软件全名 编辑:程序博客网 时间:2024/06/08 08:59


1.awk命令行

awk的调可以定义变量,提供程序并指定输入文件,其形式如下

awk [-F fs] [-v var=value…] ‘program’ [--][var=value…] [file(s)]

awk [-F fs] [-v var=value…] –f programfile[--] [var=value…] [file(s)]

短程序通常是直接在命令行上提供,而比较长的程序,则用-f选项指定。

如果命令行未指定文件名,则awk会读取标准输入。

--是特殊选项,指出awk本身已没有更进一步的命令选项,任何接下来的选项都可被你的程序使用。

-F选项用来重新定义默认字段分隔字符,且一般惯例将它作为第一个命令行选项,紧接在-F选项后的fs参数是一个正则表达式。字段分隔符也可设置使用内建变量FS所指定的。

初始化的-v选项必须放在命令行上直接给定的任何程序之前,它们会在程序启动之前以及处理任何文件之前生效,在一命令行程序之后的-v选项会被解释为一个文件名


2.awk程序模型

awk把输入流看作一连串记录的集合,每条记录都可进一步细分为字段。通常,一行一个记录,而字段是由一个或多个非空白字符的单词组成。然而,是什么构成一条记录和一个字段,完全是由程序员控制,且它们的定义,甚至可以在处理期间更改。

一个awk程序是一对以模式与大括号框起来的操作组合而成的。针对每个匹配输入数据的模式,操作会被执行,且所有模式都会针对每条记录而检查。

模式或操作可省略其中一个。如果省略模式,则操作将被应用到每条输入记录,如果操作省略,则默认操作是打印匹配之记录在标准输出上。

输入会自动地由一个输入文件切换到下一个,且awk本身通常会处理每个输入文件的打开,读取与关闭。

awk以保留字BEGINEND提供两种特殊模式,与BEGIN关联的操作只会执行一次,在任何命令行文件或一般命令行赋值被处理之前,但是在任何开头的-v选项指定已经完成之后。END操作也是只执行一次,用于所有输入数据已被处理完成之后,它多半用于产生摘要报告或是执行清除操作。当指定多个BEGINEND模式,则它们将按照在awk程序里的顺序,一次执行。


3.程序元素

awk提供了标量与数组两种变量以保存数据、数字与字符串表达式,还提供了一些语句类型以处理数据:赋值、注释、条件、函数、输入、循环及输出。

3.1注释与空白

awk里的注释是从#开始到该行结束。空行等同于空的注释。

3.2字符串与字符串表达式

awk里的字符串常数是以引号定界。字符串可包含任何8-bit的字符,除了控制字符NUL以外。字符串可包含零至多个字符,且在字符串的长度上没有限制,视可用内存而定。

反斜杠转义序列允许非打印字符的表示。

awk提供许多内建函数,如length(string)字符串长度函数

字符串的比较,用的是传统的关系运算符:==!=<<=>>=。比较后返回1为真,0为假。比较不同长度的字符串,且其中一个字符串为另一个的初始子字符串时,较短的会定义为小于较长的那个。

awk中没有字符串接续运行符。两个连续字符串,会自动地连接在一起。

将数字转换为字符串,通过数字连接空字符串即可。如n=123 s = “”n

awk对正则表达式的支持,有两个运算符:~(匹配)!~(不匹配)


awk中的split(s, a, sep)是用分隔符sep将字符串s分离成数组a

0 0
原创粉丝点击