awk 统计编程

 原理:

    1). awk逐行扫描文件,寻找匹配行,awk pattern {action}

    2). 读取文件内容的每一行时,将对比改行是否与给定的模式相匹配,

如果匹配则执行处理过程,否则对该行不做任何处理。
如果没有指定处理脚本,则把匹配的行显示到标准输出,即默认处理动作是print打印行;
如果没有指定模式匹配,则默认匹配所有数据。

   3). BEGIN 和 END 

-F 设置匹配分割符,默认是 空格 或者 tab.  eg: -F stu  默认以stu为1段

需要用begin,在处理第一行之前 就指定。

eg:echo 'hello  the :world,!' | awk  'begin {FS="[:,]"}  {print $2}'


$0:默认是该行    $1:默认是分割的第一个元素eg:echo 'hello  world' | awk 'BEGIN {FS="[,:]"}  {print $1}'

NF  默认是统计总个数  '{print NF}' 为2  '{print $NF}'为 world  因为NF为2 $NF=$2  为该行的最后一个字段

 以下为awk内置变量:
          ARGC        命令行参数个数
          FILENAME    当前输入文档的名称
          FNR        当前输入文档的当前记录编号,尤其当有多个输入文档时有用
          NR        输入流的当前记录编号
          NF        当前记录的字段个数
          FS        字段分隔符
          OFS        输出字段分隔符,默认为空格
          ORS        输出记录分隔符,默认为换行符\n
          RS        输入记录分隔符,默认为换行符\n

awk 'BEGIN {FS="\n"; RS=" "} {print $3}'  test3.txt  解释: 以换行作为第一个检索条件 在换行中以空格作为第二个检索条件 打出第三个变量的值

运算 awk -F: '$1~/root/ {print $3}' /etc/passwd

初始值都为0,字符操作一定得加引号

运算符号:除了常见的,   ~        匹配           !~        不匹配

   awk -F:  '$3>500  {print  $1}'      /etc/passwd  awk -F: '$1~/root/ {print $3}' /etc/passwd  

awk条件及循环语句
df | grep 'boot' | awk '{if($4 < 2000) print "alert";else print "ok"}'  

注意点:1 awk 必须用单引号和大括号包起来

2 print 中内容 如果为变量不用引号,否则为双引号

3 if else 中见有 分号 分割,以及多条命令中间也是分号分割 FS="\n"; RS=" "

4 多个变量中间是用,号分割

for 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值