Linux命令二:awk

上一篇 / 下一篇  2014-05-09 10:14:00 / 个人分类:Linux

Awk语法格式:

$awk 'awk程序'数据文件文件名1数据文件文件名2 …

Awk程序结构:

Pattern{Action}

如果没有Pattern表示无条件执行Action

Pattern运算符:>, <, >=, <=, ==, !=~!~

Pattern保留字:BEGINEND。分别表示程序开始之前和结束之前执行一次。

Awk字段变量

字段变量

含义

$0

一字符串,其内容为目前awk所读入的数据行.

$1

$0上第一个字段的数据.

$2

$0上第二个字段的数据.

...

其余类推

awk工作流程:

执行awk,它会反复进行下列四步骤.

  1. 自动从指定的数据文件中读取一个数据行.
  2. 自动更新(Update)相关的内建变量之值.: NF, NR, $0...
  3. 依次执行程序中 所有 的Pattern { Actions }指令.
  4. 当执行完程序中所有Pattern { Actions },若数据文件中还有未读取的数据,则反复执行步骤1到步骤4.

将程序部分储存于文件awk文件中,执行命令时指定awk程序文件,这是执行awk的另一种方式,特别适用于程序较大的情况,其语法如下:

$ awk -f awk程序文件名 数据文件文件名

可使用"-f"参数,awk主程序使用其它仅含awk函数的文件中的函数

其语法如下:

$ awk -f awk主程序文件名-f awk函数文件名 数据文件文件名

awk中如何利用系统资源

[a.语法]awk output指令| "Shell接受的命令"

[b.语法]"Shell接受的命令" | awk input指令

: awk input指令只有getline一个.

awk output指令有print, printf()二个.

getline指令语法:

语法

由何处读取数据

数据读入后置于

getline var < file

所指定的file

变量var(var省略时,表示置于$0)

getline var

pipe变量

变量var(var省略时,表示置于$0)

getline var

见 注一

变量var(var省略时,表示置于$0)

注一:PatternBEGINEND, getline将由stdin读取数据,否则由awk正处理的数据文件上读取数据.

getline一次读取一行数据,若读取成功则return 1,若读取失败则return -1,若遇到文件结束(EOF),return 0;

awk中数组

for(下标in Number){....}

字符串可以做下标,使用上面语法读出数组数据。

Awk中的重定向:

1.程序中>表示累积结果。

2.>>的不同之处为,如果系统中本来有个结果文件,>第一次执行会重写,第二次执行会追加,>>第一次执行会继续追加。

Awk内建变量:

NF:为一整数,其值表$0上所存在的字段数目.

NRFNR):为一整数,其值表awk已读入的数据行数目.

FILENAME:正在处理的数据文件文件名.

FSOFS):分隔符

RSORS):换行符

ARGC:参数个数(包括命令本身)

ARGV[no.]:参数数组,从0开始,例如ARGV[0]等于“awk”。

RSTART:执行match函数后,合条件的子字串在原字串中的位置.值为0表示未找到合条件的子字串.

RLENGTH:执行match函数后,合条件的子字串长度.值为-1表示若未找到合条件的子字串.

正则表达式组成元素:除了 . * [ ] + ? ( ) \ ^ $ 外之所有字符,如果遇到这几种字符,需要前面加上\表示转义字符。


TAG:

 

评分:0

我来说两句

Open Toolbar