系统之家 - 系统光盘下载网站!

当前位置:系统之家 > 系统教程 > Linux使用文本处理工具awk

Linux如何使用文本处理工具awk(6)

时间:2015-01-14 18:22:52 作者:qipeng 来源:系统之家 1. 扫描二维码随时看资讯 2. 请使用手机浏览器访问: https://m.xitongzhijia.net/xtjc/20150114/34882.html 手机查看 评论

  c.awk ’BEGIN{

  for(k in ENVIRON)

  {

  print k“=”ENVIRON[k];

  }

  }‘ #ENVIRON是awk常量,是数组

  d.awk ’BEGIN{

  total=0;

  for(i=0;i《=100;i++)

  {

  total+=i;

  }

  print total;

  }‘

  e.awk ’BEGIN{

  total=0;

  i=0;

  do

  {

  total+=i;

  i++;

  }while(i《=100)

  print total;

  }‘

  5.内置函数

  a.算术函数

  awk ’BEGIN{OFMT=“%.3f”;fs=sin(1);fe=exp(10);fl=log(10);fi=int(3.1415);print fs,fe,fl,fi;}‘ #OFMT 设置输出数据格式是保留3位小数

  awk ’BEGIN{srand();fr=int(100*rand());print fr;}‘ #获得随机数

  b.字符串函数

  awk ’BEGIN{info=“this is a test2010test!”;gsub(/[0-9]+/,“!”,info);print info}‘ #在 info中查找满足正则表达式,/[0-9]+/ 用””替换,并且替换后的值,赋值给info 未给info值,默认是$0

  awk ’BEGIN{info=“this is a test2010test!”;print index(info,“test”)?“ok”:“no found”;}‘

  awk ’BEGIN{info=“this is a test2010test!”;print match(info,/[0-9]+/)?“ok”:“no found”;}‘ #正则匹配

  awk ’BEGIN{info=“this is a test2010test!”;print substr(info,4,10);}‘ #从第 4个 字符开始,截取10个长度字符串

  awk ’BEGIN{info=“this is a test”;split(info,tA,“ ”);print length(tA);for(k in tA){print k,tA[k];}}‘ #分割info,动态创建数组tA

  c.时间函数

  awk ’BEGIN{tstamp=mktime(“2001 01 01 12 12 12”);print strftime(“%c”,tstamp);}‘

  awk ’BEGIN{tstamp1=mktime(“2001 01 01 12 12 12”);tstamp2=mktime(“2001 02 01 0 0 0”);print tstamp2-tstamp1;}‘ #求2个时间段中间时间差

  d.其他函数

  awk ’BEGIN{while(“cat /etc/passwd”|getline){print $0;};close(“/etc/passwd”);}‘ #打开外部文件

  awk ’BEGIN{while(getline 《 “/etc/passwd”){print $0;};close(“/etc/passwd”);}‘ #逐行读取外部文件

  awk ’BEGIN{print “Enter your name:”;getline name;print name;}‘

  awk ’BEGIN{b=system(“ls -al”);print b;}‘ #调用外部应用程序

  6.输出函数

  a.printf

  awk ’BEGIN{n1=124.113;n2=-1.224;n3=1.2345; printf(“%.2f,%.2u,%.2g,%X,%o\n”,n1,n2,n3,n1,n1);}‘ #类似于C语音

  7.awk脚本

  #!/bin/awk -f

  BEGIN{

  for(i=1;i《=9;i++)

  {

  for(j=1;j《=9;j++)

  {

  tarr[i,j]=i*j;

  print i,“*”,j,“=”,tarr[i,j];

  }

  }

  }

  注意

  1.在awk中有两个特别的表达式,BEGIN和END,这两者都可用于pattern中,提供BEGIN和END的作用是给程序赋予初始状态和程序结束之后执行一些扫尾的工作。任何在BEGIN之后列出的操作(在{}内)将在awk开始扫描输入之前执行,而END之后的操作将在扫描完全部的输入之后执行。因此通常BEGIN来显示变量和初始化变量,使用END来输出最终结果。

  2.awk中数据类型,是不需要定义,自适应的。 有时候需要通过(+、“”)强制转换。

  3.awk数组下标是从1开始,与c数组不一样。

  4.awk的多维数组在本质上是一维数组,更确切一点,awk在存储上并不支持多维数组。awk提供了逻辑上模拟二维数组的访问方式。例 如,array[2,4] = 1这样的访问是允许的。awk使用一个特殊的字符串SUBSEP (\034)作为分割字段,在上面的例子中,关联数组array存储的键值实际上是2\0344。多维数组可以使用if((i,j) in array)这样的语法,但是下标必须放置在圆括号中。多维数组使用 for ( item in array )这样的语法遍历数组。与一维数组不同的是,多维数组必须使用split()函数来访问单独的下标分量。split ( item, subscr, SUBSEP)

  5.awk实现的性能是比shell实现的强

  上面就是Linux下awk文本处理工具的用法介绍了,因为awk是Linux下功能最强大的数据处理引擎之一,所以其用法要讲解起来可不止文中介绍的这些,本文只是介绍了它的基本用法。

标签 命令

发表评论

0

没有更多评论了

评论就这些咯,让大家也知道你的独特见解

立即评论

以上留言仅代表用户个人观点,不代表系统之家立场

其他版本软件

热门教程

人气教程排行

Linux系统推荐

扫码关注
扫码关注

扫码关注 官方交流群 软件收录