Linux awk

一、AWK简介

  • 一种便于使用且表达能力强的程序设计语言,适用于计算和数据处理任务
  • 名称源自创始人Alfred Aho、Peter Weinberger和Brian Kernighan姓氏的首字母
  • awk的处理文本和数据的方式:逐行扫描文件,默认从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。
  • awk用来处理文件和数据的,是类unix下的一个工具,也是一种编程语言
  • 可以用来统计数据,比如网站的访问量,访问的IP量等等
  • 支持条件判断,支持for和while循环
    二、基本语法
    1、
    awk ‘BEGIN{commandspattern{commandsEND{commands}’
    先执行BEGIN后的{}内容,再对pattern行匹配,依次对pattern后的{}内容循环读取文件直到文件结束,最后输出END后{}的内容
仅包含主体模块
awk '$3>0{print $1,$2*$3}'file
如果第三列大于0,就打印第一列,第二列和第三列的乘积
awk '$3==0{print $1}'file
如果第三列等于0,就打印第一列
包含主体模块和开始模块
awk'BEGIN{print“NAME SALARY”}$3>0{print $1,$2*$3}'file
第一行输出NAME SALARY,当第三列大于0时,输出第一列,第二列和第三列的乘积
包含所有模块awk'BEGIN{print“NAME SALARY”}
{print $1,$2*$3
 pay=pay+$2*$3}
END{print NR,"employees"
    print "total pay is",pay
    print "average pay is",pay/NR
}'file
第一行打印NAME SALARY,然后打印第一列,第二列和第三列的乘积,total pay is第二列与第三列乘积的总和,average pay is第二列与第三列乘积的平均数
注:NR是awk的内置变量,保存目前位置读取的行数

2.输出

简单输出
{print},{print $0}   打印所有行
{print NF,$1,$3} NF表示一行中字段总数量,输出文件每一行字段总数,第一列,第三列
{print NR,$0} NR表示行号 
{print "total pay for",$1,"is",$2*$3} 
格式化输出
awk'{printf("%-8s$%6.2f\n",$1,$2*$3)}'file

3.数据选择

对比选择
$2  >=5 {print}
计算选择
$2*$3>50 {print}
通过文本内容选择
$1 =="Susie"{print}
/Susie/ {print}  如果一行中包括Susie,就输出这行
通过模式组合选择
$2>=4 ||$3>=20 {print} 第二列大于等于4或者第三列大于等于20就输出这行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值