zoukankan      html  css  js  c++  java
  • 纯awk传参和awk脚本传参

    awk传参问题一直是很多人都在头疼的事情。现在总结如下:
    一、直接调用awk脚本的问题
    比如下面这个脚本:要求计算15-30号的各种日志的总数。其中$3是区分不同页面编码的域,脚本如下:

    #/bin/sh;
    page=$1;
    i=15;
    while test $i -le 30
    do
      # awk '{m='"$j"';print $m}'
      res=$(  awk -F"\t"  '{ if($3==p) {print $0}}' p=$page shop_page.log.2009-07-$i-* |wc -l );
      echo $i"      "$res;
      ((i=$i+1))
    done

    把awk脚本拿出来,awk -F"\t"  '{ if($3==p) {print $0}}' p=$page shop_page.log.2009-07-$i-*
    其中p在其中作为牵针引线的作用,即将参数传入了,其形式awk -F   '{脚本正文} '  参数=值   日志名

    还有一种数值型的,没有必要这样参数值放在后面
    比如
    currentServer=$(echo $server|awk '{m='"$j"';print $m}');
    其中$j是shell脚本中的数值,这样直接把等于j的列域打印出来了。不必显示传参

    二、调用awk脚本型
    有时候shell脚本中需要直接调用awk脚本。传递参数时可以如下:
    awk -f  awk脚本.awk  statDate="$statDate" statHour="$statHour" 日志名.log
    其中statDate和statHour是传入的参数,其中的awk中可以直接使用
    date=statDate;
    hour=statHour;


  • 相关阅读:
    iOS刨根问底-深入理解RunLoop
    深入理解RunLoop
    Core Graphics框架 利用Quartz 2D绘图
    经济
    次贷危机的原因
    次级抵押贷款
    信用评级
    信用
    理解UIView的绘制-孙亚洲
    二级域名
  • 原文地址:https://www.cnblogs.com/pony/p/1535784.html
Copyright © 2011-2022 走看看