awk使用

为什么想到要写一篇关于awk的总结了,是上次老大让我处理linux下的文件,有一个要根据某个字段排序的功能,我真是百思不得其解,准备人工排序,老大见了不禁冷笑,很受伤,故记之,知耻近乎勇。

什么是awk

awk是linux下一个功能非常强大的文件处理工具,简而言之,awk处理linux下文件,如同sql操作关系型数据库一样,当然有些夸张了。awk是一种语言,采用此种语言可以非常高效的文件处理。

awk语言格式

awk语言格式如下:

awk 'awk语言' [输入源1] [输入源2] [输入源3]……

awk命令的关键在于在于awk语句的编写,awk语句由两部分组成:模式+动作。模式用于匹配,动作会被触发,当读入的数据和模式相互匹配的时候。如下是一个简单的awk命令:

awk '$1>0 {print $1,$2,$3}' emp.data

emp.data是数据源,awk按行读入数据源中数据,根据空字符将行划分成若干列,将每一列的值赋给 1 2、$3…….。如果第一列的值比3大,就将第一列的内容输出。

awk内置变量与函数

awk变量中有很多内置变量与函数,掌握可以让数据处理更加高效。首先,当awk从数据源中读取一行,然后解析成若干列,将每一列的值赋给 1 2、 3.1awk 0。
awk中变量与函数如下所示:
1. NR——记录当前读取的是第几行
2. sort——根据输出的第一列对输出结果进行排序,这个功能比较重要。
3. NF——输入行中单词的数量
4. length——单词中字符个数
awk类似于C语言,支持各种流程控制命令,包括if else,while,for等。

       #if
       { if (n > 0)
            print n, "employees, total pay is", pay,
                     "average pay is", pay/n
         else
             print "no employees are paid more than $6/hour"
        }
      # while
      {   i = 1
         while (i <= $3) {
            printf("\t%.2f\n", $1 * (1 + $2) ^ i)
            i = i + 1
         }
       }
       #for
       { for (i = 1; i <= $3; i = i + 1)
            printf("\t%.2f\n", $1 * (1 + $2) ^ i)
       }    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值