awk命令

   awk功能与sed类似,都是用来进行文本处理的,awk语言可以从文件或字符串中基于指定规则浏览和抽取信息。

    awk编程模型如下:

    awk程序由一个主输入循环维持,主输入循环反复执行,直到终止条件被触发。但是主输入循环框架无需程序员编写,awk已经搭好主输入循环框架,程序员写的代码被嵌入到主输入循环框架中执行。主输入循环框架自动依次读取输入文本行,以供处理,而处理文件行的动作是由程序员添加的。

    awk还定义了两个特殊的字段:BEGIN和END。BEGIN用于在主输入循环之前执行,即在未读取输入文件行之前执行。END用于在主输入循环之后执行,即在读取输入文件行完毕后执行。


    awk有三种调用方式:

    1、在shell命令行输入命令调用awk,格式为

        awk  [-F 域分隔符]  'awk 程序段'  输入文件

    2、将awk程序段插入脚本文件,然后通过awk命令调用它,格式为

        awk  -f  awk脚本文件  输入文件

    3、将awk命令插入脚本文件后,最常用的方法是设置该脚本文件为可执行,然后直接执行该脚本文件,格式为

        ./awk脚本文件  输入文件


  与awk编程有关的10个主题

  1、awk模式匹配(举例说明)

awk  '/^$/{print "This is a blank line."}'  input

  2、记录和域

awk认为每个输入文件是结构化的,awk将每个文件输入行定义为记录,行中的每个字符串定义为域,域之间用空格、Tab键或其他符号进行分隔,分隔域的符号叫分隔符。awk定义域操作符$来指定执行动作的域,域操作符$后面跟数字或变量来标识域的位置。每条记录的域从1开始编号。$1标识第一个域,$2标识第二个域,$0标识所有的域。另外域操作符$后可以跟变量或变量运算表达式,如$(one+two)。

  3、关系和布尔运算符

awk定义了一组关系运算符用于awk模式匹配

<:小于。

>:大于。

<=:小于等于。

>=:大于等于。

==:等于。

!=:不等于。

~:匹配正则表达式。

!~:不匹配正则表达式。

awk进行模式匹配时,常用到条件语句,有if、if/else、if /else else,举例如下

    awk  ‘BEGIN {FS=":"} {if($3<$4) print $0}'  /etc/passwd

awk定义了布尔运算符

||:逻辑或。

&&:逻辑与。

!:逻辑非。

  4、表达式

awk算术运算符

+:加。

-:减。

*:乘。

/:除。

%:模。

^:乘方。

++x:前自增。

x++:后自增。

  5、系统变量

awk常见环境变量及其意义

$n:当前记录的第n个域。

$0:记录的所有域。

ARGC:命令行参数的数量。

ARGV:命令行参数的数组。

ENVIRON:环境变量关联数组。

ERROR:最后一个系统错误的描述。

FILENAME:当前文件名。

FS:字段分隔符,默认是空格。

IGNORECASE:为真时匹配时忽略大小写。

NF:当前记录中的域数量。

NR:当前记录数。

OFS:输出域分隔符,默认是空格。

ORS:输出记录分隔符,默认是换行符。

RS:记录分隔符,默认是换行符。

  6、格式化输出

awk定义了printf输出语句进行格式化输出,基本格式

  printf{格式控制符,参数}

printf修饰符及其意义

-:左对齐。

width:域的步长。

.prec:小数点右边的位数。

printf格式符及其意义

%c:ASCII字符。

%d:整型数。

%e:浮点型,科学计数法。

%f:浮点数。

%o:八进制数。

%s:字符串。

%x:十六进制数。

  7、内置字符串函数

awk提供了强大的字符串函数,用于实现文本的字符串替换、查找以及分隔等功能。

awk字符串函数及其意义

gsub(r,s):在输入文件中用s替换r。

gsub(r,s,t):在t中用s替换r。

index(s,t):返回s中字符串第一个t的位置。

length(s):返回s的长度。

match(s,t):测试s是否包含匹配t的字符串。

split(r,s,t):在t上将r分成序列s,其中s为数组。

sub(r,s,t):将t中第一次出现的r替换成s。

substr(r,s):返回从字符串r中从s开始的后缀部分。

substr(r,s,t):返回从字符串r中从s开始长度为t的后缀部分。

  8、向awk脚本传递参数

变量赋值放在脚本之后,输入文件之前,格式为

  awk  脚本  parameter=value  输入文件

  9、条件语句和循环语句

条件语句if的语法如下

  if (条件表达式)

动作1

  [else

动作2]

while语句语法如下

  while (条件表达式)

动作

do-while语句语法如下

  do

动作

  while (条件表达式)

for循环语句语法如下

  for (设置计数器初值;测试计数器;计数器变化)

动作

  10、数组

数组的基本格式

  array[index]=value

且数组是关联数组,下标可以是数字也可以是字符串。

awk特别定义了一种for循环用来访问关联数组,语法如下

  for (variable in array)

do something with array[variable]


以上是awk编程的基础内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值