Linux命令简单操作之awk

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux命令简单操作之awk相关的知识,希望对你有一定的参考价值。

awk

命令格式:

    awk ‘BEGIN{commands} pattern {commands} END{commands}’file

工作方式:

    1.执行BEGIN{commands}语句块中语句,可选的语句块

    2.从文件或者stdin中读取一行,然后执行{commands},重复这个过程,直到文件全部被读取完

    3.当读至输入流末尾是,执行END{commands}语句块

特殊变量:

    FILENAME:awk浏览的文件名

    NR:记录数量,执行过程中对应于当前行号

    NF:字段数量,执行过程中对应于当前行的字段数

    FS:设置分隔符,命令行 -F

    $0:执行过程中当前行的文本内容

    $1:第一个字段的文本内容

    $2:第二个字段的文本内容,以此类推

print&printf打印输出的函数

  print的参数是以逗号进行分隔时,参数打印时则以空格作为定界符,awk的print语句中,双引号是被当做拼接操作符使用的  

  printf函数,其用法和c语言中printf基本相似,可以格式化字符串,输出复杂时,printf更加好用,代码更易懂。

流程控制语句

  if(condition)else{}

  while(){}

  do{}while()

  for(;;)等 

内建字符串控制函数:

    1.length(string):返回字符串的长度

    2.index(string,search_string):返回search_string在字符串中出现的位置

    3.substr(string,start_pos,end-pos):在字符串中从start-pos开始到end-pos位置,生成子串

   4.split(string,array,delimiter):用delimiter生成一个字符串列表,并将该列表存入数组,delimiter默认使用当前FS值。

   5.sub(regex,replace_str,string):将正则表达式匹配到的第一处内容替换成replace_str

   6.gsub(regex,replace_str,string):替换正则表达式匹配到所有的内容

   7.match(regex,string):检测正则表达式是否能够匹配字符串

应用:

  1.从文件或者stdin中读取一行,循环执行{commands},直到读完

  echo "aXbX cXdXe a;b;cX d;e" | awk -F"[X|;| ]+" ‘BEGIN{print "begin:"} {for(i=1;i<=NF;++i){++S[$i];printf("$%d=%s\\n",i,$i)}} END {print "end:"; for(i in S) print i, S[i]}‘

技术分享

  2.split函数

技术分享

 

以上是关于Linux命令简单操作之awk的主要内容,如果未能解决你的问题,请参考以下文章

Linux命令简单操作

shell命令三剑客之awk命令详解,cut命令,linux里记录行踪(操作记录)

Linux常用文本操作命令整理

Linux之awk详解

Linux命令之awk_1

Linux命令简单操作之sed