首页 > 其他 > 详细

awk实战演示

时间:2019-02-25 23:45:31      阅读:245      评论:0      收藏:0      [点我收藏+]

awk:报告生成器,格式化文本输出。

我们一般使用的awk命令其实就是gawk,在centos7系统下,awk是gawk的链接文件。

基本用法:gawk [options] ‘program‘  FILE .......

program:PATTERN{ACTION STATEMENTS}

  STATEMENTS语句之间使用分号隔开。

  ACTION:print,printf

  options:-F:文本字段分隔符。

     -v:var=value,自定义变量。

1、print

  print item1,item2,item3...........

  要点:

    1、使用逗号来分隔各个item等,而输出时的分隔符默认为空格字符。

    2、输出的item可以是字符串,也可以是数值,当前记录的字段,变量或者awk的表达式。

    3、如省略item,相当于print $0;

演示:

技术分享图片

技术分享图片

技术分享图片

2、变量,需要指定参数:-v

   2.1、内建变量

    FS:input Field Seperator:输入字段分隔符,默认为空白字符。

    OFS:output Field Seperator:输出字段分隔符,默认为空白字符。

演示:

技术分享图片

技术分享图片

 

    RS:input Record Seperator:输入时的行分隔符,默认是换行符。

    ORS:output Record Seperator:输出时的行分隔符,默认时换行符。

演示:

 技术分享图片

技术分享图片

所以说RS与ORS一起使用可以达到替换字符的目的。

还有一个需要注意的:

技术分享图片

    NF:显示当前行的字段数。以行为单位进行显示。

      print NF:显示当前行的字段数。、

      print $NF:引用当前行的第NF字段的值。

    NR:行数,命令后跟的所有文件将统一合并行数

    FNR:行数,每个文件单独计算行数。

演示:

技术分享图片

技术分享图片

 

技术分享图片

这个命令就跟下面这个命令很相似:

    技术分享图片

技术分享图片

拓展:

技术分享图片

    FILENAME:当前正被awk读取的文件的文件名;

    ARGC:awk命令中的参数的个数。

    ARGV:数组,保存了命令行参数本身。

      ARGV[index]

      ARGV[0],ARGV[1]

   2.2、自定义变量

    -v VAR_NAME=VALUE,变量名区分字符大小写。

演示:

技术分享图片

这里的文件/etc/issue的内容没有什么用,只是用来标识文件有多少行,就显示多少个变量值。

3、printf命令

  格式化输出:printf FORMAT,item1,item2........

    (1):FORMAT必须给出。

    (2):不会字段换行,需要显式给出换行控制符,\n

    (3):FORMAT中需要分别为后面的每个item指定一个格式化符号,否则item无法显示。

    格式符:

      %c:显示单个字符

      %d或%i:显示十进制整数。

      %e:科学计数法显示数值

      %f:显示浮点数

      %s:显示字符串。

演示:

 技术分享图片

  修饰符:

     #[.#]:

        左边的#:用于指定显示的宽度。

        右边的#:显示精度。

     +:显示数值的符号

     -:左对齐显示。

 演示:

技术分享图片

4、操作符

  算数操作符:

     x+y,x-y,x*y,x/y,x^y,x%y

    -x

    +x:转换为数值。

  字符串操作符:没有符号的操作符,字符串连接。

  赋值操作符:

     =,+=,-+,*=,/=,%=,^=

      ++,--

  比较操作符:

    >,>=,<,<=,!=,==

  模式匹配符:

    ~:左侧是否能由右侧指定的模式所匹配。

    !=:左侧是否不能由右侧指定的模式所匹配。

  逻辑操作符:

    &&

    ||

    !

  函数调用:

    function_name(argu1,argu2,.......)

  条件表达式:

    selector?if-true-expression:if-false-expression

演示:

技术分享图片

5、PATTERN

  5.1、empty:空模式,匹配每一行;

  5.2、/regular expression/:仅处理能被regular expression匹配到的行。

演示:

技术分享图片

技术分享图片

  5.3、relational expression:关系(比较)表达式,结果有“真”有“假”,但结果为“真”才能被awk处理。对于此处的关系表达式来讲,其结果为非0数值或非空字符串即为“真”。

技术分享图片

 

技术分享图片

用模式匹配的方法来做

技术分享图片

  5.4、line range:行范围。

  /pat1/,/pat2/   从pat1被匹配到的那一行开始到pat2的那一行结束之间所有的行。

  注意:不支持像sed命令那样直接给出数字的格式。

演示:

技术分享图片

技术分享图片

NR表示统计的文件的行数,他会从1开始显示,符合要求的打印出来。

   5.5、BEGIN/END模式

    BEGIN:在文件格式化操作开始之前事先执行的一次操作,通常用于输出表头或做出一个初始化的操作。

    END:在文件格式操作完成之后,命令推出之前执行的一次操作。通常用于输出表尾或做出清理操作。

 演示:

 技术分享图片

 6、常用的action

  6.1、Expressions

  6.2、Control statements:if,while等。

  6.3、Compound statements:组合语句;

  6.4、input statements

  6.5、output statements

7、控制语句

  if(condition) {statements}

  if(condition) {statements} else {statements}

  while(condition) {statements}

  do {statements} while(condition)

  for(expr1;expr2;expr3) {statements}

  break

  CONTINUE

  delete array[index]

  delete array

  exit

  {statements}

 

awk实战演示

原文:https://www.cnblogs.com/FengGeBlog/p/10433214.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!