awk

awk:

awk是一种编程语言,对文本和数据进行处理,支持正则表达式,突出特点是对文本列的处理。

awk基本功能:在文件或字符串中基于指定规则来分解抽取信息,也可以基于指定规则来输出信息。

 

awk的调用方式:

(1)awk [option] ‘awk_script’ inputfile1 [inputfile2 …]

选项:-F fs         使用fs作为字段分隔符,默认为Space

      -f filename    从文件中读取awk脚本

      -v var=value   为awk_script设置变量

(2)将awk_script放入脚本文件,并以!#/bin/awk –f作为首行

(3)将所有awk_script写入到一个单独脚本文件,然后调用“awk –f awk 脚本文件 输入文件列表”进行执行

 

记录和域:

(1)域分隔符

域分隔符:默认为Tab。内置变量FS

输出域分隔符:默认为Space。内置变量OFS

修改方法:awk –F ‘[:\t]’ ‘{print $1,$3}’ passwd

 

(2)记录:一行为一个记录

记录分隔符:默认为换行。内置变量ORS和RS

变量NR:计数器

例:awk –F ‘{print NR,$0}’ grade.txt

 

(3)域:一列为一个域

域标志顺序为$1,S2,…,$n。$0表示整条记录,$1表示第一列

域之间的分隔符默认为Space或Tab,可以使用-F参数修改。

例:awk ‘{print $1,$3}’ grade.txt

 

 

Awk脚本:

Awk脚本由模式和操作组成。

Awk命令的一般格式:

awk ‘ BEGIN { action }

awk_pattern1 { action }

awk_pattern2 { action }

awk_patternN { action }

END { action }

‘ inputfile

 

Awk内置函数:

函数

函数说明

gsub(r,s)

在整个$0中用s代替r

gsub(r,s,t)

在整个t中用s代替r

index(s,t)

返回s中字符串t的第一位置

length(s)

返回s长度

match(s,r)

测试s是否包含r字符串

Split(s,a,fs)

用fs作为分隔符将s分成序列a

sprint(fmt,exp)

返回fmt格式化后的exp

sub(r,s)

用$0中最左边最长的r子串代替s

substr(s,p)

返回字符串s中p开始的后缀部分

substr(s,p,n)

返回字符串s中p开始,长度为n的后缀部分

 

 

 awk变量:

(1)变量不需要定义可以直接使用

(2)awk赋值语句为“var=exp”

     例如:awk ‘$1 ~/test/{count=$2+$3;print count}’ test

(3)域变量可被赋值和改变。

     例如:awk ‘{$2=$1+100;print $2}’ test

(4)可以使用内置变量。

     例如:awk ‘{if($1==”MARY”)  {print NR,$1,$2,$NF}}’ test


你可能感兴趣的:(linux)