awk记录和域

来源:互联网 发布:淘宝sku图片尺寸是多少 编辑:程序博客网 时间:2024/06/04 17:44


                                                      Awk记录和域


       awk认为输入的文件是结构的,将每个输入文件行定义为记录,行中的每个字符串定义为域域之间用空格、TAB键或其他符号分隔,这些符号叫做分隔符。


       awk默认空格键是分隔符,TAB键被认为是连续的空格键来处理(两个或多个连续的空格键或tab键当作一个分隔符处理)。


       awk可以用-F选项改变分隔符(-F表示改变分隔符,-f表示调用awk脚本);还可以通过在BEGIN字段设置环境变量FS来改变分隔符。举例:


        awk  -F“\t”  '{print $3}' /proc/devices                             //将分隔符该做 /t  TAB


        awk    ' BEGIN {FS = “\t”}{print$3} ' /proc/devices       //将分隔符该做 /t  TAB


      awk定义域操作符$指定执行动作的域,域操作符$后面跟的数字变量来标识域的位置,每条记录的域从1开始编号,$1表示第一个域,$2表示第二个域,$0表示所有域。举例(分隔符为空格键)


                 Li                                  Hua                1234567


                   n个空格)                         nTAB键)


          第一个域($1              第一个域($2                   第一个域($3


      awk '{print $1 $2 $3}' input                                                                //打印三个域的字符串


      awk 'BEGIN{one = 1; two = 2}{print $(one+two)}' input                 //打印第三个域的字符串


      awk '{print $0}' input                                                                           //打印所有域的字符串


     不同的输入文件,需要根据实际情况设置相应的分隔符,也可以通过正则表达式将分隔符设置为多个字符。示例:


  1. FS = “\t”               将一个tab键作为分隔符

  2. FS = “\t+”          将一个或多个tab键作为分隔符

    对记录 waz\t\tcq, 1会解释为       waz  空域 cq三个域 , 2会解释为        waz  cq两个域

               

本文完全参照           <linux shell 编程从初学到精通>    华清远见嵌入式培训中心  伍之昂等编著

0 0